为了达到美观的效果,本文给出的例子都稍微有点复杂。但是使用起来并不困难,只需要将对应位置的变量替换成自己的数据即可。代码看起来有点多是为了便于理解,所有的参数都加了注释,实现功能的代码量并不是很多,对于只想使用基础画图功能的,可以通过删减参数达到简化的目的。
画柱状图
先上效果:
代码及注释:
import matplotlib.pyplot as plt
import numpy as np
FontSize=15#这里统一设置一下表示尺寸的变量,后面的所有尺寸就用这个,全图的尺寸保持一致
x = list(range(1,24,4))#首先设置好X轴上面每个标签的间隔
x1=[i-0.25 for i in x]#因为有四个柱子,这里设置每个柱子的位置,这个值跟每个柱子的宽度width有关
x2=[i-0.75 for i in x]
x3=[i+0.25 for i in x]
x4=[i+0.75 for i in x]
plt.figure(figsize=(12, 10))#设置整个图的尺寸,12表示长度,10表示宽度
#下面是画每个柱子,y1,y2,y3,y4是自己需要画的每个x的值对应的值,比如这里的y2=[53,51,61,35.6,60,67.2],维度与X一致
#color表示这个柱子的颜色,align=“center”表示边界值在每个柱子的中间,默认值left表示在左边;label是图例名称,
#hatch是填充条纹格式,alpha表示透明度
plt.bar(x1, y1,width = 0.5,color = 'c',align = 'center',label = 'edge1',hatch='///',alpha = 0.5,)
plt.bar(x2, y2,width = 0.5,color = 'r',align = 'center',label = 'edge2',hatch='',alpha = 0.9)
plt.bar(x3, y3,width = 0.5,color = 'b',align = 'center',label = 'edge3',hatch='//',alpha = 0.7)
plt.bar(x4, y4,width = 0.5,color = 'y',align = 'center',label = 'edge4',hatch='/',alpha = 1)
plt.legend(loc = 'upper right',fontsize=FontSize)#设置图例位置和图例中字体的大小
plt.xticks(fontsize=FontSize)#这里设置x轴和Y轴上面标度的字体大小
plt.yticks(fontsize=FontSize)
plt.xlim(0,24)#限制X轴和Y轴的起止点
plt.ylim(0,225)
plt.xlabel('Hours', fontsize=FontSize)#设置X轴和Y轴的标签
plt.ylabel('Travel Time (s)', fontsize=FontSize)
plt.savefig('/MyDocument/picture.jpg',bbox_inches = 'tight')#保存,bbox_inches防止保存的图形不全
其中设置柱子颜色的color的其他选项有:
参考链接:
http://www.sofasofa.io/forum_main_post.php?postid=1002595
hatch表示柱子的填充颜色,其他选项有:{’/’, ‘’, ‘|’, ‘-’, ‘+’, ‘x’, ‘o’, ‘O’, ‘.’, ‘*’},通过增加字符串里面的个数就可以增加填充密度,比如"///“比”/"密集
参考链接:https://www.jianshu.com/p/e8033e25e1aa
还有关于matplotlib.bar的其他参数可以参考它的官方网址:
https://matplotlib.org/api/_as_gen/matplotlib.pyplot.bar.html?highlight=bar#matplotlib.pyplot.bar
画折线图
先上效果图
代码如下:
import matplotlib.pyplot as plt
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']#支持中文
FontSize=12
f, ax = plt.subplots(figsize=(12,6)) #设置所画图的大小,12表示长度,6表示宽度
x=[1,2,3,4,5,6,7,8,9,10] #这是X变量,需要画出10个点的折线
MarkerSize=8 #用来设置折点样式的大小
plt.xlim(0, 11) # 限定横轴的范围
plt.ylim(0, 1100) # 限定纵轴的范围
#plt.plot用来画折线图,marker表示折点的样式,比如图中的小圆点、正方形等,mec设置折点边框的颜色,mfc表示折点内部的颜色
#markersize设置折点的大小,linestyle设置线条样式,label设置图例里面的名称,color设置线条的颜色
plt.plot(x, y1, marker='^', mec='black', mfc='w',markersize=MarkerSize,linestyle=":",label="LSTM-ED",color="black")
plt.plot(x, y2, marker='*', mec='b', mfc='w',markersize=MarkerSize,linestyle="--",label="SimTrack-CNN",color="blue")
plt.plot(x, y3, marker='s', mec='orange', mfc='w',markersize=MarkerSize,linestyle="-",label="SimTrack-GCN",color="orange")
plt.plot(x, y4, marker