1.绘制折线图与图像配置

matplotlib是画折线图、散点图这些用的,相对于前端的Echarts,用的频率其实不太高。

matplotlib的存在意义就是,我如果只为了得到几个图像,不需要为数据写一个服务,然后再让前端去搞。

在学习的时候知道一些API就行,具体能画哪些图可以在官方文档中点击Examples看一下 https://matplotlib.org/stable/plot_types/index.html

如果matplotlib满足不了需求可以尝试用其他的库,比如Echarts.js、plot(没用过)、seabron(没用过)

plot python版本的官网 Plotly Python Graphing Library

目录

1  基本使用

2  保存图片 plt.savefig()

3  设置图片属性 plt.figure()

3.1  设置图片大小 figsize

3.2  设置图片dpi

4  定义x轴刻度 plt.xticks()

4.1  指定任意数字数组作为x轴刻度

4.2  将数字数组映射为字符串数组

4.3  旋转指定角度

4.4  坐标显示中文

4.4.1  方式一 把字体文件放到指定的位置

4.4.2  方式二 把字体文件放到任意位置

4.5  坐标值字体大小

5  定义y轴刻度 plt.yticks()

6  x轴标签 plt.xlabel()

7  y轴标签 plt.ylabel() 

8  图像标题 plt.title() 

9  图像网格 plt.grid()

9.1  透明度 alpha

9.2  线条风格 linestyle

10  使用图例

10.1  画多条曲线

10.2  添加图例

10.3  图例位置

10.4  线条颜色、线条风格、线条粗细、透明度


1  基本使用

我们先简单的画一个折线图,需要x轴与y轴坐标,然后画就行了

下面这个代码经过的点是 (2,15) (5,13) (8,14.6) (9.7,17) 这四个点

plt.plot()是画折线图

plt.show()是展示出来

  • 在notebook中你不用plt.show()也能展示出来

2  保存图片 plt.savefig()

savefig()必须卸载plot()之后,要不就会保存一张空的图

运行后在想对路径下就可以得到这张画好的图像

也可以保存为svg格式,svg图像是矢量图,无论放大多少倍也不会模糊

3  设置图片属性 plt.figure()

3.1  设置图片大小 figsize

需要一个元组的参数,我们比如想把图片设置为 宽20个dpi的像素值 高80个dpi的像素值 ,那么就像下面这样写

  • dpi是每英寸的像素点数,plt保存默认dpi的值为100,也就是我们下面的图像保存后宽是2000px,高是800px
  • 如果要给figsize的20和8定义一个单位的话,那这两个值的单位是英寸

保存后的图像明显是扁了

我们打开属性看一下

3.2  设置图片dpi

dpi是图片每英寸的像素点数,默认为100。这个值可以理解为越大越清晰,我们现在把他设置为10

在保存的图片中可以看到dpi的信息

打开后再放大到适合查看的大小就会发现图像非常模糊

4  定义x轴刻度 plt.xticks()

我们现在画一张这个图像,发现x轴的刻度很多,我掌握不好点的具体数值

4.1  指定任意数字数组作为x轴刻度

这个时候发现了只显示了x的值的刻度,其他的没了

plt/xticks()实际上参数接收的是一个数组,我们可以给他任意的数组

4.2  将数字数组映射为字符串数组

可以把数字映射成字符串,也就是10的位置替换成hello,20的位置替换成world,30的位置替换成suyu

4.3  旋转指定角度

比如我想旋转90度

映射成字符串也是一样

可以旋转任意角度,比如44度

4.4  坐标显示中文

默认情况下显示不了中文

4.4.1  方式一 把字体文件放到指定的位置

这个时候需要往环境文件夹中放一个ttf文件,我们可以通过matplotlib.matplotlib_fname()找到环境文件夹的大致位置

我们可以通过上面的命令找到matplotlibrc这个文件,我们需要将字体文件放在 E:\Anaconda\Lib\site-packages\matplotlib\mpl-data\fonts\ttf 中

  • 在windows中可以在 C:\Windows\Fonts 找到字体文件

之后用 matplotlib.rcParams['font.family'] = [字体名] 设置一下就行了

4.4.2  方式二 把字体文件放到任意位置

通过font_manager.FontProperties()实例化一个字体对象,然后在xticks使用fontproperties参数。这个fontproperties不只在xticks()这个函数中可以用,如果需要用到中文的时候就可以用上

4.5  坐标值字体大小

在xticks加上参数size。size这个参数不仅xticks()会用到,别的函数可能也会用到

5  定义y轴刻度 plt.yticks()

与plt.xticks()用法类似,我们简单用一下,参数是一个列表

常用传入纵坐标列表

6  x轴标签 plt.xlabel()

7  y轴标签 plt.ylabel() 

8  图像标题 plt.title() 

9  图像网格 plt.grid()

网格就是每一个x的刻度画一条竖线,每一个y刻度画一条横线,如果要调整网格的密度可以改变x、y轴的刻度

9.1  透明度 alpha

alpha取值为0到1。1是完全不透明,0是完全透明

9.2  线条风格 linestyle

线条风格(linestyle)可选

  • '-' 实线
  • '--' 横杠虚线
  • '-.' 点画线
  • ':' 点虚线
  • '' 无线条

10  使用图例

10.1  画多条曲线

首先我们需要画多条曲线,画多条曲线就是plt.plot()多次,多条曲线的维度可以不同

from matplotlib import pyplot as plt

x1 = [2,5,8,9.7,20]
y1 = [15,13,14.6,17,36]

x2 = [4,7,10,12.18]
y2 = [85,45,12,33]

x3 = [12,58,91]
y3 = [23,78,64.66]

plt.plot(x1,y1)
plt.plot(x2,y2)
plt.plot(x3,y3)

plt.show()

10.2  添加图例

首先在plot中加入label,然后使用plt.legend()

  • 再plt.legend()中使用中文要用prop参数
from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname="./STSONG.TTF")

x1 = [2,5,8,9.7,20]
y1 = [15,13,14.6,17,36]

x2 = [4,7,10,12.18]
y2 = [85,45,12,33]

x3 = [12,58,91]
y3 = [23,78,64.66]

plt.plot(x1,y1,label="你")
plt.plot(x2,y2,label="我")
plt.plot(x3,y3,label="他")

plt.legend(prop=my_font)

plt.show()

图例默认会放在最合适的位置,如果不合适可以通过loc参数进行调整,可选值为

  • 'best': 0
  • 'upper right': 1
  • 'upper left': 2
  • 'lower left': 3
  • 'lower right': 4
  • 'right': 5
  • 'center left': 6,
  • 'center right': 7
  • 'lower center': 8
  • 'upper center': 9
  • 'center': 10

10.3  图例位置

比如我想放在正中间(参数值写10也行,写'center'也行)

from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname="./STSONG.TTF")

x1 = [2,5,8,9.7,20]
y1 = [15,13,14.6,17,36]

x2 = [4,7,10,12.18]
y2 = [85,45,12,33]

x3 = [12,58,91]
y3 = [23,78,64.66]

plt.plot(x1,y1,label="你")
plt.plot(x2,y2,label="我")
plt.plot(x3,y3,label="他")

plt.legend(prop=my_font,loc=10)

plt.show()

10.4  线条颜色、线条风格、线条粗细、透明度

线条颜色(color)直接用16进制颜色,比如#F0F0F0 (还可以用r、g、b这种代表红绿蓝,orange代表橘色这种)

线条风格(linestyle)可选

  • '-' 实线
  • '--' 横杠虚线
  • '-.' 点画线
  • ':' 点虚线
  • '' 无线条

粗细(linewidth)为整形,越大越粗。透明度(alpha)为浮点0-1,越大越不透明

from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname="./STSONG.TTF")

x1 = [2,5,8,9.7,20]
y1 = [15,13,14.6,17,36]

x2 = [4,7,10,12.18]
y2 = [85,45,12,33]

x3 = [12,58,91]
y3 = [23,78,64.66]

plt.plot(x1,y1,label="你",color='#427A79',linestyle='--',linewidth=1,alpha=0.2)
plt.plot(x2,y2,label="我",color='#73137A',linestyle='-.',linewidth=4,alpha=0.5)
plt.plot(x3,y3,label="他",color='#0E7A2C',linestyle=':',linewidth=8,alpha=0.8)

plt.legend(prop=my_font,loc=10)

plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Suyuoa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值