一、实验目的
- 了解matplotlib库的基本功能
- 掌握matplotlib库的使用方法
二、实验工具:
- Anaconda
- Numpy,matplotlib
- python
三、Matplotlib简介
Matplotlib 包含了几十个不同的模块, 如 matlab、mathtext、finance、dates 等,而 pylot 则是我们最常用的绘图模块
四、实验内容
1.绘制正弦曲线,并设置标题、坐标轴名称、坐标轴范围
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
#设置字体
mpl.rcParams['font.sans-serif']=['FangSong']
mpl.rcParams['axes.unicode_minus']=False
x = np.arange(0,2*np.pi,0.02)
y = np.sin(x)
plt.plot(x,y)
plt.title(u'正弦曲线',fontdict={'size':18})#设置标题
plt.xlabel(u'弧度',fontdict={'size':16})#显示横轴名称
plt.ylabel(u'正弦值',fontdict={'size':16})#显示纵轴名称
plt.axis([-0.1*np.pi,2.1*np.pi,-1.1,1.1])#设置坐标轴范围
plt.show()
2.同一坐标系中绘制多种曲线并通过样式、宽度、颜色加以区分
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
#设置字体
mpl.rcParams['font.sans-serif']=['FangSong']
mpl.rcParams['axes.unicode_minus']=False
x = np.linspace(-5,5,200)
f1 = np.power(10,x)
f2 = np.power(np.e,x)
f3 = np.power(3,x)
plt.plot(x,f1,'r',ls='-',linewidth=2,label='$10^x$')
plt.plot(x,f2,'b',ls='--',linewidth=2,label='$e^x$')
plt.plot(x,f3,'g',ls=':',linewidth=2,label='$3^x$')
plt.axis([-5,5,-0.5,8])
plt.text(1,7.5,r'$10^x$',fontsize=15)
plt.text(2.2,7.5,r'$e^x$',fontsize=15)
plt.text(3.1,7.5,r'$3^x$',fontsize=15)
plt.title("幂函数曲线图",fontsize=15)
plt.legend(loc='upper left')
plt.show()
3.绘制多轴图,即将多幅子图绘制在同一画板。
import matplotlib.pyplot as plt
plt.subplot(221) # 两行两列的第1个位置
plt.axis([-1, 2, -1, 2])
plt.axhline(y=0.5, color='b')
plt.axhline(y=0.5, xmin=0.25, xmax=0.75, color='r')
plt.subplot(222) # 两行两列的第2个位置
plt.axis([-1, 2, -1, 2])
plt.axvline(x=0, ymin=0, linewidth=4, color='r')
plt.axvline(x=1.0, ymin=-0.5, ymax=0.5, linewidth=5, color='g')
plt.subplot(212) # 两行一列的第2个位置
plt.axis([-1, 2, -1, 2])
plt.axvspan(1.25, 1.55, facecolor='g', alpha=0.5)
plt.axhspan(0.25, 0.75, facecolor='0.5', alpha=0.5)
plt.show()
4.直方图的绘制(数据自己定义)
import numpy as np
import matplotlib.pyplot as plt
mydata = np.random.normal(3.0,1.0,1000)
plt.hist(mydata)
plt.title("直方图",fontsize=15)
bins=np.arange(-3,14,1)
plt.hist(mydata,bins)
plt.show()
5.绘制散点图
import numpy as np
import matplotlib.pyplot as plt
x = np.random.rand(80)
y = np.random.rand(80)
area = np.pi * (15 * np.random.rand(80))**2
color = 2 * np.pi * np.random.rand(80)
plt.title("散点图",fontsize=20)
plt.scatter(x, y, s=area, c=color, alpha=0.5, cmap=plt.cm.hsv)
plt.show()
6.绘制盒状图
import matplotlib.pyplot as plt
import numpy as np
all_data = [np.random.normal(0, std, 100) for std in range(1, 4)]
fig = plt.figure(figsize=(8,6))
plt.boxplot(all_data,
notch=False, # box instead of notch shape
sym='rs', # red squares for outliers
vert=True) # vertical box aligmnent
plt.xticks([y+1 for y in range(len(all_data))], ['x1', 'x2', 'x3'])
plt.xlabel('measurement x')
t = plt.title('盒状图',fontsize=20)
plt.show()
7.尝试matplotlib库的其它功能,如2D,3D等
2D
import numpy as np
import matplotlib.pyplot as plt
data=np.clip(np.random.randn(5,5),-1,1)
plt.subplot(221)
plt.imshow(data)
plt.subplot(222)
plt.imshow(data,cmap=plt.cm.cool)
plt.subplot(223)
plt.imshow(data,cmap=plt.cm.hot)
plt.colorbar()
plt.subplot(224)
im = plt.imshow(data,cmap=plt.cm.winter)
plt.colorbar(im, cmap=plt.cm.winter, ticks=[-1,0,1])
plt.show()
3D
import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d
x, y = np.mgrid[-2:2:50j,-2:2:50j]
z = x*np.exp(-x**2-y**2)
ax = plt.subplot(111,projection='3d')
ax.plot_surface(x,y,z,rstride=2,cstride=1,cmap=plt.cm.coolwarm,alpha=0.8)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.show()
8.安装pyecharts,利用pyecharts自选数据并进行可视化展示。
(此部分数据是从网上寻找的,可自行另找数据)
from pyecharts.charts import Pie ,Grid,Bar,Line
#from pyecharts.faker import Faker #数据包from pyecharts.charts import Map,Geo
from pyecharts.charts import Map,Geo
from pyecharts import options as opts
from pyecharts.globals import ThemeType
locate =['合肥市', '阜阳市', '亳州市', '安庆市', '马鞍山市', '铜陵市', '六安市', '滁州市', '池州市','蚌埠市','芜湖市','宿州市','宣城市','淮北市','淮南市','黄山市']
data =['115','105','72','66','30','22','41','11','11','88','27','27','5','22','14','9']
list1 = [[locate[i],data[i]] for i in range(len(locate))] #首先创建数据
map_1 = Map(init_opts=opts.InitOpts(width="400px", height="460px")) #创建地图,其中括号内可以调整大小,也可以修改主题颜色。
map_1.add("安徽疫情", list1, maptype="安徽") #添加安徽地图
map_1.set_global_opts( #设置全局配置项#title_opts=opts.TitleOpts(title="安徽疫情"), 添加标题
visualmap_opts=opts.VisualMapOpts(max_=120, is_piecewise=True),#最大数据范围 并且使用分段
legend_opts=opts.LegendOpts(is_show=False), #是否显示图例
)
map_1.render() #将地图以html形式保存在工作目录下