matplotlib基本用法

官方文档 https://matplotlib.org/stable/api/matplotlib_configuration_api.html

安装

pip install matplotlib

使用

中文字体

默认不支持中文字体,需要自己添加字体库

windows在设置里面找文件后缀要是ttf 如

C:\Windows\Fonts\SimHei.ttf

linux用命令fc-list可查看有哪些字体,筛选出中文使用fc-list :list=zh

如果没有建议直接把windows上面的复制到linux的某个目录下

from matplotlib.font_manager import FontProperties

font = FontProperties(fname="C:\Windows\Fonts\SimHei.ttf", size=14)

# 在哪个地方用就把font放到哪
plt.xlabel("时间\n参数", fontsize=14, fontproperties=font, loc="left")

plt.legend(loc="upper left", prop=font)
画图

plt.plot(x, y)就是画线,写几个就是画几条线,注意横纵坐标就行

from matplotlib import pyplot as plt

x = [i for i in range(2, 26, 2)]
y = [15, 13, 14.5, 17, 20, 24, 26, 26, 27, 22, 18, 15]
plt.plot(x, y)
plt.show()
plot一些参数
color='#ACEFD1' 可以填颜色英文或十六进制
label='线条标签' 在图片上显示这条线的说明 需搭配legend
linewidth=1.0   线条粗细
设置横纵坐标轴

纵坐标默认会根据数量大小自动选择合适的区间和数量来显示

横坐标需要自己手动设置,不然会很密集

plt.xticks(x) # 以传入的值数量来确定x轴点数
plt.xlabel("im x", fontsize=20)

plt.yticks(x)
plt.ylabel("im y", fontsize=20)
横坐标太密

我的做法是将横坐标的列表分段,如下分成10段

import matplotlib.ticker as ticker

n = len(x)//10
plt.gca().xaxis.set_major_locator(ticker.MultipleLocator(n))
横纵坐标加上单位

就是给纵坐标拼接一个字符串 如拼接一个Mb,以纵坐标为例

括号里的写法跟print()一样 根据你实际纵坐标的值来

import matplotlib.ticker as ticker

unit = 'Mb'
plt.gca().yaxis.set_major_formatter(ticker.FormatStrFormatter(f'%d {unit}'))
横坐标不从零点开始,纵坐标零点不显示

加上如下即可

plt.ylim(ymin=-0.005)
plt.xlim(xmin=-0.005)
横纵坐标说明

这个说明是显示在横坐标下方的,font为前面的字体

plt.xlabel("我是横", fontsize=14, fontproperties=font, loc="left")
plt.ylabel("我是纵", fontsize=14, fontproperties=font)
每条线添加说明

这个是在图片上标注的,写好lable和legend即可,prop后面是字体,loc不会填写个错的看报错会全报出来

plt.plot(x, y_in, color='#ACEFD1', label='入流量', linewidth=1.0)
plt.plot(x, y_out, color='#5EA9EE', label='出流量', linewidth=1.0)

plt.legend(loc="upper left", prop=font)
最高点显示坐标

拿到y轴列表里最大值的索引,写好显示的坐标格式或别的什么,plt.annotate加上即可

以下为两条线的最高点,最低点拿最小值索引即可

# y_out, y_in是我的两个y轴列表
y_out_max = y_out.index(max(y_out))
y_in_max = y_in.index(max(y_in))

max_out_info = str(y_out[y_out_max]) + ',' + x[y_out_max]
max_in_info = str(y_in[y_in_max]) + ',' + x[y_in_max]

plt.annotate(max_out_info, xy=(y_out_max, y_out[y_out_max]))
plt.annotate(max_in_info, xy=(y_in_max, y_in[y_in_max]))
添加网格

alpha透明度,:表示虚线

 plt.grid(alpha=0.4, linestyle=':')
填充颜色

这个填充颜色的填充两条线之间的颜色,如果想填充某条线到x轴的颜色,我是直接画成粗一点的柱状图

plt.fill_between(x, y_in, y_out, facecolor='blue')
# plt.bar(x, y_in, color='#ACEFD1',label='入流量', width=1.5)
设置图片大小
# figsize是尺寸 dpi是像素 自己慢慢调
plt.figure(figsize=(20, 8), dpi=80)
保存图片

bbox_inches参数减少图片周围的空白区域

plt.savefig("./test.jpg", bbox_inches='tight')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值