python 使用matplotlib绘制折线图

2018-12-21  本文已影响11人  TAsama

1. matplotlib

  1. 能将数据进行可视化,更直观的呈现
  2. 是数据更加客观、更具说服力

matplotlib: 最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建

例:假设一天中每隔两个小时(range(2,26,2))的气温(℃)分别是[15,13,14.5,17,20,25,26,26,27,22,18,15]

from matplotlib import pyplot 
x = range(2, 26, 2)
y = [15,13,14.5,17,20,25,26,26,27,22,18,15]
# -->x轴和y轴的数据一起组成了所有要绘制出的坐标
# -->分别是(2,15),(4,13),(6,14.5),(8,17)...
pyplot.plot(x, y)
pyplot.show()

即所得结果:



这个结果与我们想要的结果并不完全相同,x轴和y轴的刻度不是我们想要的,另外,图片中没有相关的文字介绍,我们的坐标轴并没有明确表达其含义!

  1. 使用figure改变图片大小
from matplotlib import pyplot as plt

x = range(2, 26, 2)
y = [15,13,14.5,17,20,25,26,26,27,22,18,15]
# 设置了图片大小,和图片的dpi
fig = plt.figure(figsize=(20, 8), dpi=80)
plt.plot(x, y)
# 以矢量图保存,这样放大不会失真,不会模糊
plt.savefig("./t1.svg")
plt.show()
改变大小后的图
  1. 修改x的刻度
from matplotlib import pyplot as plt


x = range(2, 26, 2)
y = [15,13,14.5,17,20,25,26,26,27,22,18,15]

fig = plt.figure(figsize=(20, 8), dpi=80)
plt.plot(x, y)
plt.xticks(x) # 这里传入的x就是x轴的列表
plt.yticks(range(min(y), max(y) + 1))
plt.show()
改变了坐标轴后

可以看到,刻度改变了,折线图会自适应刻度去变化。

  1. 中文支持
from matplotlib import pyplot as plt
from matplotlib import font_manager

my_font = font_manager.FontProperties(fname='/System/Library/Fonts/PingFang.ttc')

x = range(2, 26, 2)
y = [15,13,14.5,17,20,25,26,26,27,22,18,15]

fig = plt.figure(figsize=(20, 8), dpi=80)
plt.plot(x, y)
plt.xticks(x, fontproperties=my_font)
plt.yticks(range(min(y), max(y) + 1))
plt.show()

我们还可以添加描述:

plt.xlabel('时间', fontproperties=my_font)
plt.ylabel('温度', fontproperties=my_font)
plt.title('时间温度表', fontproperties=my_font)
添加了坐标轴描述

绘制网格

plt.grid()
带网格的图

网格是根据刻度来绘制的,想要改变网格间距,就更改刻度的稀疏。

绘制多张折线图时,只需要再plt.plot(x, y)一次即可

from matplotlib import pyplot as plt
from matplotlib import font_manager

my_font = font_manager.FontProperties(fname='/System/Library/Fonts/PingFang.ttc')

x = range(2, 26, 2)
y = [15,13,14.5,17,20,25,26,26,27,22,18,15]

fig = plt.figure(figsize=(20, 8), dpi=80)
plt.plot(x, y)
y_2 = [21, 14, 31, 7, 5, 12, 17, 8, 14, 21, 12, 23]
plt.plot(x, y_2)
plt.xticks(x, fontproperties=my_font)
plt.yticks(range(min(y), max(y) + 1))


plt.xlabel('时间', fontproperties=my_font)
plt.ylabel('温度', fontproperties=my_font)
plt.title('时间温度表', fontproperties=my_font)

plt.grid()
plt.show()
多条线

添加图例说明

plt.legend(prop=my_font)
# prop设置字体,目标是支持中文
添加了图例
上一篇下一篇

猜你喜欢

热点阅读