首页 >> 大全

Python matplotlib绘制折线图及实例

2023-09-08 大全 34 作者:考证青年

是受的启发构建的。.模块中有一套完全仿照的函数形式的绘图接口,这套函数接口方便用户过度到包。

本篇文章是博主在B站学习总结,写了一天,讲述绘图技巧,干货加实例,并附代码、运行图,希望对大家有所帮助。

引例:

每天温度数据如下,[15, 12.2, 14, 14, 34, 43, 23, 34, 11.5, 22, 23, 12],利用绘制折线图。

代码如下:

python">from matplotlib import pyplot as pltx = range(2, 26, 2)
y = [15, 12.2, 14, 14, 34, 43, 23, 34, 11.5, 22, 23, 12]plt.plot(x, y)
plt.show()

展示如下:

_matplot画折线图_python绘制折线图代码

可以看到,上图十分简洁,大致达到了初学者希望绘制图片的期望。但是,我们希望能够增加对这幅图的描述信息,并且让图片更美观。

1. 设置图片大小(高清无码大图)并保存到本地

from matplotlib import pyplot as plt#设置图片大小
#figsize=(长度,高度), dpi=每单位的像素点
fig = plt.figure(figsize=(20,8), dpi=80)x = range(2, 26, 2)
y = [15, 12.2, 14, 14, 34, 43, 23, 34, 11.5, 22, 23, 12]#绘图
plt.plot(x, y)#保存本地-设置.png防止放大失真
plt.savefig("./t1.png")#展示图形
plt.show()

2. 描述信息,如x轴和y轴表示含义,以及图表标题含义。

from matplotlib import pyplot as plt
import randomy = [random.randint(20, 35) for i in range(120)]
x = range(120)fig = plt.figure(figsize=(16,6),dpi=80)##调整x轴刻度并添加汉字解释
_xticks_lable = ["10点{}分".format(i) for i in range(60)]
_xticks_lable += ["11点{}分".format(i) for i in range(60)]
#取步长,数据与字符串一一对应
plt.xticks(list(x)[::3], _xticks_lable[::3], rotation=45)#字符串旋转45度
plt.yticks(y)plt.plot(x,y)
plt.show()

运行之后,如图,发现x坐标轴没有显示汉字,而是方框。这是由于默认字体没有汉字,需要我们自己修改默认设置才可以。

这里博主推荐一篇修改默认字体的文章,博主用的方法一,亲测有效。

matplot画折线图__python绘制折线图代码

修改之后的代码(添加了x轴,y轴的描述信息,标题)如下:

from matplotlib import pyplot as plt
from matplotlib import font_manager#设置字体
import random# 使用my_font存出一个加载的中文字体
my_font = font_manager.FontProperties(fname='C:\Windows\Fonts\STSONG.TTF')y = [random.randint(20, 35) for i in range(120)]
x = range(120)fig = plt.figure(figsize=(16,6),dpi=80)##调整x轴刻度并添加汉字解释
_xticks_lable = ["10点{}分".format(i) for i in range(60)]
_xticks_lable += ["11点{}分".format(i) for i in range(60)]
#取步长,数据与字符串一一对应
plt.xticks(list(x)[::3], _xticks_lable[::3], rotation=45, fontproperties=my_font)#字符串旋转45度#添加描述信息
plt.xlabel("时间 单位(min)", fontproperties=my_font)
plt.ylabel("温度 单位(C)", fontproperties=my_font)
plt.title("10点到12点每分钟气温变化", fontproperties=my_font)##绘制网格,横竖线根据x,y坐标轴数目
plt.grid(alpha=0.5)#alpha设置网格透明度plt.plot(x,y)
plt.show()

3. 线条的样式(比如颜色、透明度、图例等)

##绘制两条折线并添加图例
from matplotlib import pyplot as plt
from matplotlib import font_manager# 使用my_font存出一个加载的中文字体
my_font = font_manager.FontProperties(fname='C:\Windows\Fonts\STSONG.TTF')x = range(11, 31)
y1 = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
y2 = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]##设置x轴
x_labels=["{}岁".format(i) for i in range(11,31)]
plt.xticks(list(x), x_labels,rotation=45, fontproperties=my_font)##详细信息
plt.xlabel("年龄", fontproperties=my_font)
plt.title("数目随年龄变化曲线", fontproperties=my_font)##绘制网格,横竖线根据x,y坐标轴数目
plt.grid(alpha=0.5, linestyle=":")#alpha设置网格透明度,linestyle设置线条样式点状#绘制图形,设置线条样式
plt.plot(x, y1, label="小明", color="red", linestyle="--")
plt.plot(x, y2, label="小红", linewidth=3, alpha=0.5)#添加图例,不能使用fontproperties
plt.legend(loc="best",prop=my_font)#loc调整显示位置,prop设置字体plt.show()

4. 标记出特殊的点(比如最高点和最低点在哪里)

假设最高点为(23,6),添加代码语句如下:

#添加最高点
plt.text(23,6, "max", color="r")#前面表示图中实际坐标,中间是标注的内容,最后是颜色信息

5. 给图片添加一个水印(防止盗用)

#加图水印
from __future__ import print_function
import numpy as np
import matplotlib.cbook as cbook
import matplotlib.image as image
import matplotlib.pyplot as plt# Fixing random state for reproducibility
np.random.seed(1996)datafile = cbook.get_sample_data('logo.png', asfileobj=False)
print('loading %s' % datafile)
im = image.imread(datafile)
im[:, :, -1] = 0.5  # set the alpha channelfig, ax = plt.subplots()ax.plot(np.random.rand(20), '-o', ms=20, lw=2, alpha=0.7, mfc='orange')
ax.grid()
fig.figimage(im, 5, 5, zorder=3)plt.show()

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了