当前位置 > it书童 > python > 正文

python使用matplotlib画图之折线图

python it书童 2020-05-23 17:37:08 0赞 0踩 122阅读 0评论

所谓数据分析,就是从大量的数据中获取直观的分析结果,便于判断决策

数据分析已经是现代社会的基础能力

流程:提出问题 -> 准备数据 -> 分析数据 -> 获得结论 -> 成果可视化

python 的 matplotlib 可以很方便地画图,本文介绍如何画折线图

示例1

以下是一天中每隔两小时的气温,我们要用折线图表示

15, 13, 14, 10, 13, 20, 25, 26, 26, 24, 22, 18

源码:

from matplotlib import pyplot as plt
x = range(2, 26, 2)
y = [15, 13, 14, 10, 13, 20, 25, 26, 26, 24, 22, 18]
plt.plot(x, y)
plt.show()

这条曲线相当粗劣,没有任何说明,其他人是看不出曲线背后所表达的含义,接下来对曲线的细节进行优化

from matplotlib import pyplot as plt

x = range(2, 26, 2)
y = [15, 13, 14, 10, 13, 20, 25, 26, 26, 24, 22, 18]

# 设置图片大小以及清晰度
plt.figure(figsize=(20, 8), dpi=80)

# 绘图
plt.plot(x, y)

# 设置 x 轴刻度,间距设置为 1
plt.xticks(range(2, 25))

# 设置 y 轴刻度
plt.yticks(range(min(y), max(y) + 1))

# 保存为本地图片
plt.savefig('./test.png')

plt.show()

示例2

绘制10点到12点的每一分钟的气温变化折线图

from matplotlib import pyplot as plt
import random
from matplotlib import font_manager

# 实例化字体
my_font = font_manager.FontProperties(fname="/System/Library/Fonts/PingFang.ttc")

# 生成 120 分钟列表
x = range(0, 120)
# 随机生成每分钟的温度
y = [random.randint(20, 35) for i in range(120)]

# 设置画布
plt.figure(figsize=(20, 8), dpi=80)

# 设置 x 轴显示的刻度,分钟要用 60 进制
_x = list(x)
_xtick_labels = ["10点{}分".format(i) for i in range(60)]
_xtick_labels += ["11点{}分".format(i) for i in range(60)]

# 刻度值的间距要调整加大
interval = 10
plt.xticks(_x[::interval], _xtick_labels[::interval], rotation=45, fontproperties=my_font)

# 描述信息
plt.xlabel('时间', fontproperties=my_font)
plt.ylabel('温度 单位(°C)', fontproperties=my_font)
plt.title('10点至12点每分钟的温度显示结果', fontproperties=my_font)

plt.plot(x, y)

plt.show()

示例3

设置网格效果

from matplotlib import pyplot as plt
from matplotlib import font_manager

# 实例化字体
my_font = font_manager.FontProperties(fname="/System/Library/Fonts/PingFang.ttc")

y = [1, 0, 1, 1, 2, 4, 3, 2, 3, 4, 4, 5, 6, 5, 4, 3, 3, 1, 1, 1]
x = range(11, 31)

# 设置画布
plt.figure(figsize=(20, 8), dpi=80)
plt.plot(x, y)

_xtick_labels = ["{}岁".format(i) for i in x]
plt.xticks(x, _xtick_labels, fontproperties=my_font)
plt.yticks(range(0, 9))

# 绘制网格并设置网络透明度
plt.grid(alpha=0.4)

plt.show()

示例4

同时展示多条曲线

from matplotlib import pyplot as plt
from matplotlib import font_manager

my_font = font_manager.FontProperties(fname="/System/Library/Fonts/PingFang.ttc")
y_1 = [1, 0, 1, 1, 2, 4, 3, 2, 3, 4, 4, 5, 6, 5, 4, 3, 3, 1, 1, 1]
y_2 = [2, 1, 3, 1, 3, 5, 3, 2, 1, 0, 2, 5, 3, 5, 2, 3, 3, 0, 5, 1]
x = range(11, 31)

# 设置图形大小
plt.figure(figsize=(20, 8), dpi=80)
plt.plot(x, y_1, label='自己', color='orange', linestyle=':')
plt.plot(x, y_2, label='同桌', color='blue', linestyle='-.')

_xtick_labels = ["{}岁".format(i) for i in x]
plt.xticks(x, _xtick_labels, fontproperties=my_font)
plt.yticks(range(0, 9))

# 绘制网格
plt.grid(alpha=0.4, linestyle='--')

# 添加图例
plt.legend(prop=my_font, loc='upper left')

plt.show()

转载须注明出处:https://www.itshutong.com/articles/506/python-uses-matplotlib-to-draw-a-line-graph
关于我
一个文科出身的程序员,追求做个有趣的人,传播有价值的知识,微信公众号主要分享读书思考心得,不会有代码类文章,非程序员的同学请放心订阅
发表评论
我有句话,不知当讲不当讲?
要讲之前请先 登录