import matplotlib.pyplot as plt
#下面三行解决中文字的显示问题
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
#设置生成的图片的大小
plt.rcParams['figure.figsize'] = (8.0, 8.0)
plt.rcParams['savefig.dpi'] = 300 #图片像素
plt.rcParams['figure.dpi'] = 300#设置图片分辨率
#设置轴向尺度
plt.axis([0,5,0,20])
#设置图像主题
plt.title('my first plot',fontsize=20)
#设置x轴表示含义
plt.xlabel('Count')
#设置y轴表示含义
plt.ylabel('Square value')
#图片插入内容,位置和内容自定义
plt.text(1,1.5,'First')
plt.text(2,4.5,'Second')
plt.text(3,9.5,'Third')
plt.text(4,16.5,'Five')
#给图片设置网格
plt.grid(True)
#设置图片中函数的秒数,这里设置了表格
plt.text(1.1,12,r'$y=x^2$',fontsize=20,bbox={'facecolor':'yellow','alpha':0.2})
#图片里的点,这里是三种不同的图形表示
plt.plot([1,2,3,4],[1,4,9,16],'bo')
plt.plot([1,2,3,4],[0.8,3.5,8,15],'g^')
plt.plot([1,2,3,4],[0.5,2.5,4,12],'b*')
#图片标题,会对不通的图形代表的含义作出解释说明
plt.legend(['First series','Second series','Third series'],loc=2)
#图片保存,格式自己定义
plt.savefig('my_chart.png')
########################################################################
另外针对多画布问题
plt.subplot(221) # 将figure设置的画布大小分成几个部分,参数‘221’表示2(row)x2(colu),即将画布分成2x2,两行两列的4块区域,1表示选择图形输出的区域在第一块,图形输出区域参数必须在“行x列”范围 ,此处必须在1和2之间选择——如果参数设置为subplot(111),则表示画布整个输出,不分割成小块区域,图形直接输出在整块画布上
plt.plot(y,xx) # 在2x2画布中第一块区域输出图形
plt.subplot(222)
plt.plot(y,xx) #在2x2画布中第二块区域输出图形
plt.show()
plt.subplot(223) #在2x2画布中第三块区域输出图形
plt.plot(y,xx)
plt.subplot(224) # 在在2x2画布中第四块区域输出图形
plt.plot(y,xx)
#==============================
plt.plot(x,y) # 只提供x轴,y轴参数,画最简单图形
运行以后会出现下面图形(因为代码里设置的大小参数和轴的尺度不唯一,所以图形仅供参考)
这些只是最基本最简单的操作,主要是牢记各个部分的函数名称,应该不难操作
下面是一个更具体一点的实例
import pandas as pd
columns=['语文','数学','英语','化学','物理','体育']
frame=pd.read_csv('D:\example\score.csv',sep=',',names=columns)
import matplotlib.pyplot as plt
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
plt.rcParams['figure.figsize'] = (8.0, 8.0)
plt.rcParams['savefig.dpi'] = 300 #图片像素
plt.rcParams['figure.dpi'] = 300
fig,axes=plt.subplots(2,1)
#plt.axes=([0,20,0,200])
# plt.ylabel()
# plt.xlabel('成绩')
axes[0].set_xlabel('学生')
axes[0].set_ylabel('分数')
axes[0].set_title('考试成绩一览表')
plt.title('考试成绩一览表')
frame.plot.bar(ax=axes[0],alpha=0.7)
frame.plot.barh(ax=axes[1],alpha=0.7)
frame.plot()
生成一下三张图片,图片未经雕琢,见谅!
再举一个事例加以说明
from matplotlib import font_manager
plt.rcParams['figure.figsize'] = (4.0, 3.0)
x=np.arange(-np.pi,np.pi,000.1)
y=sin(x)
plt.title('函数图像')
plot(x,y,lw=2,c='r',ls='-.',label='数值')
#设置轴向标注
plt.xlabel('数学',fontsize=20)
plt.ylabel('学生',fontsize=20)
#设置x,y轴的上下限
plt.xlim(-np.pi,np.pi)
plt.ylim(-1,1)
设置关键刻度
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi])
#添加文字,前面是坐标,第二个是内容,后面是字体格式
plt.text(0,0.5,'dont move',fontdict={'size':'16','color':'b'})
#添加标注,xy表示标注箭头想要指示的点,xytext:描述信息的坐标,arrowprop表示箭头的样式
plt.annotate('note!!',xy=(-np.pi,0),xytext=(-np.pi,2),fontsize=16,arrowprops=dict(facecolor='black',shrink=0.01))
z=x**3
plot(x,z,label='函数')
plt.legend(loc=(1,0))
深入一点:
a=['猩球崛起3:终极之战','敦刻尔克','蜘蛛侠:英雄归来','战狼2']
b_16=[15746,24456,416,1556]
b_15=[15653,666,5662,365]
b_14=[1646,3666,3662,552]
bar_width=0.2
x_14=list(range(len(a)))
x_15=[i+bar_width for i in x_14]
x_16=[i+bar_width*2 for i in x_14]
plt.figure(figsize=(20,8),dpi=80)
ax=plt.subplot(211)
ax.set_title('Counter')
ax.set_xlabel('x')
plt.bar(range(len(a)),b_14,width=bar_width,label='9月14日')
plt.bar(x_15,b_15,width=bar_width,label='9月15日')
plt.bar(x_16,b_16,width=bar_width,label='9月16日')
plt.legend()
plt.xticks(x_15,a)