当前位置: 代码迷 >> 综合 >> matplotlib 基础教程(上)
  详细解决方案

matplotlib 基础教程(上)

热度:50   发布时间:2023-11-14 14:44:30.0

matplotlib 笔记(上)

1.折线图

例题一

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

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分辨度
plt.figure(figsize=(20,8),dpi=80)#绘图
plt.plot(x,y)# 设置x轴的刻度,使刻度是小数,y轴同理
# _xtick_labels = [i/2 for i in range(2,29)]
# plt.xticks(_xtick_labels)# 设置x轴和y轴的刻度和范围
plt.xticks(range(0,29,2))
plt.yticks(range(min(y),max(y)+1))#保存
# plt.savefig("./t1.png")#展示图形
plt.show()

例题二

如果列表a表示10点到12点的每一分钟的气温,如何绘制折线图观察每分钟的变化情况?
a = [random.randint(20,35) for i in range(120)]

from matplotlib import pyplot as plt
import random# matplotlib默认不支持中文字体,在方法rc()处,cltr+b查看源码可以知道参数形式
# 可能不适用mac,或者有些字体不能用,直接全局改了字体
font = {
    'family': 'SimHei',  # 设置字体'weight': 'bold',  # 字体宽度'size': '12'}
plt.rc('font', **font)
plt.rc('axes', unicode_minus=False)  # 解决负号x = range(0, 120)
y = [random.randint(20, 35) for i in range(120)]# 设置图片大小 dpi分辨度
plt.figure(figsize=(20, 8), dpi=80)# 绘图
plt.plot(x, y)# 设置x轴的刻度,显示中文
_x = list(x)[::3]
_xtick_labels = ["10点{}分".format(i) for i in range(60)]
_xtick_labels += ["11点{}分".format(i) for i in range(60)]# 设置x轴的数字和字符串的间隔一样,rotation使字符串旋转,270代表度数
plt.xticks(_x, _xtick_labels[::3], rotation=45)# 保存
# plt.savefig("./t1.png")# 添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("温度随时间的变化折线图")# 展示图形
plt.show()

其他显示中文的方法

例题三

假设有一个调查,统计两个人从10岁到30岁每年读过书本的数量,结合自身情况,绘制折线图每年读过书本数量的走势。
要求:x轴用10岁,11岁表示。

from matplotlib import pyplot as pltfont = {
    'family': 'SimHei','weight': 'bold','size': '12'}
plt.rc('font', **font)
plt.rc('axes', unicode_minus=False)
y_1 = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
y_2 = [1,0,3,1,2,2,3,3,2,1 ,2,1,1,1,1,1,1,1,1,1]
x = range(11,31)
plt.figure(figsize=(20,8),dpi=80)# plot多次,画出多个图形,linewidth=2 线条宽度,linestyle线条风格,color百度搜索颜色代码
plt.plot(x,y_1,label="自己",color="#F08080",linestyle=":")
plt.plot(x,y_2,label="同桌",color="#DB7093",linestyle="--")#设置x轴刻度
_xtick_labels = ["{}岁".format(i) for i in x]
plt.xticks(x,_xtick_labels)
# plt.yticks(range(0,9))#绘制网格,alpha代表网格透明程度
plt.grid(alpha=0.4,linestyle=':')#添加图例
plt.legend(loc="upper left")#展示
plt.show()


颜色代码
官方文档实例

  相关解决方案