👀
Matplotlib折线图与多绘图figure
 

依赖

 
import matplotlib.pyplot as plt
 

绘制

 
plt.figure()
#创建画布
#------设置画布-------
#plt.figure(figsize=(,),dpi=)
plt.plot([1,2,3,4,5,6,7],[70,80,68,56,45,34,23])
#绘制图像,数组1/2分别为X/Y轴
plt.savefig("new_plot.png")
#save图像,只输入字符时保存于当前路径
plt.show()
#显示图像
tip:设置画布应与创建画布一体,在show之后图像将置空,所以保存图片应在show之前,否则会输出空画布
 

辅助绘制

 
import matplotlib.pyplot as plt
import random
x = range(24)
#生成1-20的数组x
y1 = [random.uniform(12,24) for i in x]
#生成x个均匀分布在1224之间的数值集y1
plt.figure()
plt.plot(x,y1)
plt.show()#输出
💡
均匀分布:np.randon.uniform(min,max,size),所有的随机值出现概率是一样的
  • 刻度显示修正
plt.xticks(range(24)[::4])
#plt.xticks(range(0,24,5))
#修正X刻度的显示范围(0-24)与步长(5)
plt.yticks(range(0,24,4))
str = ["{}H".format(i)for i in x]
#生成一组刻度
plt.xticks(range(24)[::4],str[::4])
#x的步长与代替刻度的步长必须相同
 
  • 图像中文输出修正(win略)
 
plt.rcParams['font.sans-serif'] = ['SimHei'] 
# 步骤一(替换sans-serif字体)
plt.rcParams['axes.unicode_minus'] = False   
# 步骤二(解决坐标轴负数的负号显示问题)
安装含有中文的字体(例黑体),删除matplotlib的缓存
window:
python matplotlib 中文显示参数设置
最近在学习python著名的绘图包matplotlib时发现,有时候图例等设置无法正常显示中文,于是就想把这个问题解决了。 PS:本文仅针对Windows,其他平台仅供参考。 大致就是matplotlib库中没有中文字体。我安装的anaconda,这是对应的matplotlib的字体所在文件夹(怎么找到matplotlib配置文件夹所在,下面解决方案会叙述,easy man~)。 C:\Anaconda64\Lib\site-packages\matplotlib\mpl-data\fonts\ttf 现在整理一下我认为比较好的解决方案: #coding:utf-8 import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=False #用来正常显示负号 #有中文出现的情况,需要u'内容' import matplotlib matplotlib.matplotlib_fname() #将会获得matplotlib包所在文件夹 然后进入 C:\Anaconda64\Lib\site-packages\matplotlib\mpl-data该文件夹下就能看到 matplotlibrc 配置文件。 1)打开该配置文件,找到下面这行: #font.serif : Bitstream Vera Serif, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif 然后,将前面的注释去掉!2)找中文字体放到matplotlib字体库中。在Windows文件夹下: C:\Windows\Fonts\Microsoft YaHei UI复制该字体,然后粘贴到 C:\Anaconda64\Lib\site-packages\matplotlib\mpl-data\fonts\ttf文件夹,并给它重命名为 Vera.ttf 。 注明:这一步的作用其实就是将matplotlib中一个默认的字体替换为我们复制过来的中文字体,将这个中文字体命名改为matplotlib中有的字体名。 其实,还有其他方案,但是貌似在我这儿没成功。 坐标轴的负号正常显示: #去掉了注释符号,同时,改为False axes.unicode_minus : False #coding:utf-8 import matplotlib.pyplot as plt plt.plot((1,2,3),(4,3,-1)) plt.xlabel(u'横坐标') plt.ylabel(u'纵坐标') plt.show() 博客链接: matplotlib 中文乱码解决 官网-Customizing matplotlib matplotlib中,修改配置文件,让它默认使用的字体就是中文字体 解决matplotlib中文乱码问题(Windows) python画图包seaborn和matplotlib中文字体显示 如何在matplotlib里显示中文
 
  • 添加网格与描述
plt.grid(True,linestyle = "--",alpha = 0.5)
#网格设置,可以不加True,alpha为透明度
plt.xlabel("day_time")
plt.ylabel("°C")
plt.title("a table")
#添加x,y轴的描述
 

多个折线

 
再次用plot就可以绘制第二条折线,会自动分配颜色
y2 = [random.uniform(1,10)for i in x]
plt.plot(x,y2,...)
#color = r/b,linestyle = "--"#label="nanjing"图例预示
plt.legend()
#启用图例
plt.legend(|Location Code|)
#改位置Location Code = 0-6

多个绘图区(子图)在同一画布

 
实现matplotlib.pyplot.subplots,返回图对象fig和绘图区ax,plt.相当于面向过程的画图方法,axes.set_相当于面向对象的画图方法
import matplotlib.pyplot as plt
import numpy as np
import random
x = np.arange(1,24)
y1 = [random.uniform(12,24) for i in x]
y2 = [random.uniform(4,10) for j in x]
fig,a = plt.subplots(1,2)
a[0].plot(x,y1)
a[1].plot(x,y2)
a[0].set_title("第一个")
a[1].set_title("第二个")
plt.show()
显示和单绘图还是有一定的区别