matplotlib画图,这一篇就够了(使用Python画常见的柱状图、折线图、直方分布图、二维和三维的散点图,热力图)


为了达到美观的效果,本文给出的例子都稍微有点复杂。但是使用起来并不困难,只需要将对应位置的变量替换成自己的数据即可。代码看起来有点多是为了便于理解,所有的参数都加了注释,实现功能的代码量并不是很多,对于只想使用基础画图功能的,可以通过删减参数达到简化的目的。

画柱状图

先上效果:
在这里插入图片描述
代码及注释:

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
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

skj1995

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值