记录一下这两天画图遇到的问题和解决方法
调用的是matplotlib.pyplt
折线图
最简单的
import matplotlib
x=[5,1,3,4]
y=[6,7,8,5]
plt.plot(x,y) plt.show()结果如下图:
想要把每个点突出一下改进一下:
plt.plot(x,y,'o-',color='r')
'o-'可以写成'o--''o-.''*-'等可以改变点的形状线条,color可以改变折线的颜色,比如这样
同一个坐标系想画多条线:
x=[1,2,3,4] y=[3,5,8,9] y1=[1,8,3,2] plt.plot(x,y,'*-',color='b') plt.plot(x,y1,'*-',color='b')
加横纵坐标含义及标题:
显示不出汉字?加两行
from pylab import mpl mpl.rcParams['font.sans-serif'] = ['SimHei']以前版本是在汉子前加u即u'x轴',现在的版本这样就可以
想添加标注?改进:
x=[1,2,3,4] y=[3,5,8,9] y1=[1,5,6,8] plt.plot(x,y,'*-',label='男性',color='b') plt.plot(x,y1,'*-',label='女性',color='r') plt.xlabel('x轴') plt.ylabel('y轴') plt.title('标题') plt.legend()
label是标注的具体信息,legend是标注操作
相加网格加一句就可以实现
plt.grid()
必杀技!找了好久才找到给折线图某一点想加他的值在图上显示
plt.annotate('9',xy=(4,9),xytext = (4, 8.6))
想给蓝色线的最高点加上他的值,’9‘为要加的值,xy是标记的点的位置,xytext是标记数值放的位置
plt.savefig('24.png')
用这一句就可以存下来了,他不支持存成jpg
完整import matplotlib.pyplot as plt from pylab import mpl mpl.rcParams['font.sans-serif'] = ['SimHei'] x=[1,2,3,4] y=[3,5,8,9] y1=[1,5,6,8] plt.plot(x,y,'*-',label='男性',color='b') plt.plot(x,y1,'*-',label='女性',color='r') plt.xlabel('x轴') plt.ylabel('y轴') plt.title('标题') plt.legend() plt.grid() plt.annotate('9',xy=(4,9),xytext = (4, 8.6)) plt.show()
柱状图
直接上个完整版
def autolabel(rects): for rect in rects: height = rect.get_height() plt.text(rect.get_x()+rect.get_width()/2-0.2,1.01* height, '%s' % float(height)) rects =plt.bar(left = (0),height = (35),color=('g'),width=0.35,align='center',yerr=0.0000001) rects1 =plt.bar(left = (1),height = (22),color=('y'),width=0.35,align='center',yerr=0.0000001) rects2 =plt.bar(left = (2),height = (41),color=('r'),width=0.35,align='center',yerr=0.0000001) rects3 =plt.bar(left = (3),height = (83),color=('b'),width=0.35,align='center',yerr=0.0000001) plt.xlabel('x') plt.xticks((0,1,2,3),('少年','青年','壮年','老年')) plt.ylabel('y') plt.title('标题') autolabel(rects) autolabel(rects1) autolabel(rects2) autolabel(rects3) plt.legend((rects,rects1,rects2,rects3),('少年','青年','壮年','老年')) plt.show()函数是用来取柱状图的高并标记出来,xticks从左边开始每一个柱状图的标注,legend整体标注,其中的元素必须是元组,plt.bar是画柱状图的操作,left是这个柱状图开始的点,height为赋的值,align使标注居中,yerr设置的很小可以是最高的柱不会紧挨着画框。