matplotlib使用笔记(一) 入门用法

第一点我们需要知道matplotlib就是一个python画统计图的库,它提供了许多作图的方法。

有关matplotlib的安装我就不说了

我们直接来尝试一段代码

from matplotlib import pyplot as plt #导入包并重命名
x=range(2,26,2) #创建横左边
y=[12,34,23,45,67,43,87,45,67,12,90,55] #创建纵坐标
plt.plot(x,y) # 画图
plt.show() #将图显示出来

这一段代码产生的图像如下所示(有点丑,但是无伤大雅):
pyplot_01

这是一个最简单的画图代码,但是对于追求美观的我们这一点远远不够,我们目前大概需要结局的下面几个问题:

下面就给出以上问题对应的代码(在原来代码上一步步添加):

  • 调整图片大小
from matplotlib import pyplot as plt #导入包并重命名
plt.figure(figsize=(20,8),dpi=80)
# (20.8)宽和高,dpi像素点密集度
x=range(2,26,2) #创建横左边
y=[12,34,23,45,67,43,87,45,67,12,90,55] #创建纵坐标
plt.plot(x,y) # 画图
plt.show() #将图显示出来

图片输出如下:
pyplot_02

具体figsize以及dpi如何影响最终图片大小的,可以自己多试试。

  • 将图片保存到本地
#只需要在画完图之后加一句
plt.savefig("path\filename.png")
# path为图片保存的路径,建议使用相对路径

效果没啥好展示的,就是文件夹多了个文件

  • 调整刻度
from matplotlib import pyplot as plt #导入包并重命名
plt.figure(figsize=(20,8),dpi=80)
# (20.8)宽和高,dpi像素点密集度
x=range(2,26,2) #创建横左边
y=[12,34,23,45,67,43,87,45,67,12,90,55] #创建纵坐标
plt.xticks([1,2,3,6,7,18,19])
plt.plot(x,y) # 画图
plt.show() #将图显示出来

效果如下图所示,这也就意味着一旦x,y轴对应关系确定了,我横坐标的刻度值可以随便指定。
pyplot_03
由此类推,y轴的刻度就是

plt.yticks([1,2,3,4,5]) 
  • 对x,y轴进行描述(包括名称,单位)
from matplotlib import pyplot as plt  # 导入包并重命名
plt.figure(figsize=(20, 8), dpi=100)
# (20.8)宽和高,dpi像素点密集度
x = range(2, 26, 2)  # 创建横左边
y = [12, 34, 23, 45, 67, 43, 87, 45, 67, 12, 90, 55]  # 创建纵坐标
plt.xticks([1,2,3.5,6,7,18,19])
plt.xlabel("time")
plt.ylabel("temp")
plt.title("temp-time")
plt.plot(x, y)  # 画图
plt.show()  # 将图显示出来

显示结果如下:
pyplot_04
这边会出现一个问题,添加的文字不能是中文,这个我们需要额外设置一下,参考博客

  • 线条属性

线条属性就是图像线条的样式是粗还是细,是实线还是虚线,我们可以在plot方法中增加线条属性参数来设置,为了方便对比,这里我们设置两条曲线,也就是使用两次plt.plot()

from matplotlib import pyplot as plt  # 导入包并重命名
plt.figure(figsize=(20, 8), dpi=100)
# (20.8)宽和高,dpi像素点密集度
x = range(2, 26, 2)  # 创建横左边
y_1= [12, 34, 23, 45, 67, 43, 87, 45, 67, 12, 90, 55]  # 创建纵坐标
y_2= [11, 36, 20, 40, 60, 49, 80, 49, 69, 10, 90, 55]
plt.xticks([1,2,3.5,6,7,18,19])
plt.xlabel("time")
plt.ylabel("temp")
plt.title("temp-time")
plt.plot(x, y_1,label="today",color="red",linestyle="--")  # 画图
plt.plot(x, y_1,label="yesterday",color="blue",linestyle=":")  
plt.grid()
plt.legend() #添加图例
plt.show()  # 将图显示出来

效果图如下:
pyplot_05
提醒一下,plt.legend()可以通过添加参数更改位置,详情见博客

  • 绘制散点图

绘制散点图其实很简单,就是将plt.plot()换成plt.scatter()

from matplotlib import pyplot as plt  # 导入包并重命名
plt.figure(figsize=(20, 8), dpi=100)
# (20.8)宽和高,dpi像素点密集度
x = range(2, 26, 2)  # 创建横左边
y_1= [12, 34, 23, 45, 67, 43, 87, 45, 67, 12, 90, 55]  # 创建纵坐标
y_2= [11, 36, 20, 40, 60, 49, 80, 49, 69, 10, 90, 55]
plt.xticks([1,2,3.5,6,7,18,19])
plt.xlabel("time")
plt.ylabel("temp")
plt.title("temp-time")
plt.scatter(x, y_1,label="today",color="red",linestyle="--")  # 画图
plt.scatter(x, y_2,label="yesterday",color="blue",linestyle=":")  
plt.grid()
plt.legend() #添加图例
plt.show()  # 将图显示出来

效果如下:
pyplot_06

  • 绘制条形图

绘制条形图也很简单,将plt.plot()换成plot.bar(),为了美观,我们将图的数据换一下

from matplotlib import pyplot as plt  # 导入包并重命名
plt.figure(figsize=(20, 8), dpi=100)
# (20.8)宽和高,dpi像素点密集度
x = range(1,7) # 创建横左边
y = [3,5,6,4,3,2]
plt.xlabel("time")
plt.ylabel("temp")
plt.title("temp-time")
plt.bar(x, y,label="today",color="red",width=0.3)  # 画图
plt.grid()
plt.legend() #添加图例
plt.show()  # 将图显示出来

显示结果如下:
pyplot_07

如果我们想要话对个柱状图,就需要进行下面的操作,简单来说就是将横坐标错开柱宽个单位,否则就会重叠在一起

from matplotlib import pyplot as plt  # 导入包并重命名
plt.figure(figsize=(20, 8), dpi=100)
# (20.8)宽和高,dpi像素点密集度
x = range(1, 7)  # 创建横左边
y_1 = [3, 5, 6, 4, 3, 2]
y_2 = [4, 1, 3, 6, 8, 9]
y_3 = [10, 2, 4, 7, 10, 8]
plt.xlabel("time")
plt.ylabel("temp")
plt.title("temp-time")
bar_width = 0.2 #柱宽
x_2 = [i + bar_width for i in x]#错开
x_3=[i + 2*bar_width for i in x]
plt.bar(x, y_1, label="today", color="red", width=bar_width)  # 画图
plt.bar(x_2, y_2, label="tomorrow", color="green", width=bar_width)  # 画图
plt.bar(x_3, y_3, label="yesterday", color="gray", width=bar_width)  # 画图
plt.grid()
plt.legend()  # 添加图例
plt.show()  # 将图显示出来

效果图如下:
pyplot_08

  • 其他统计图

对于pyplot来说,掌握上面的统计图是远远不够的,所以matplotlib官网给我们提供了许多模板,只需要将模板下载下来修改一下就可以了。

猜你喜欢

转载自blog.csdn.net/qq_41459262/article/details/104522693