matplotlib绘图

本文围绕Matplotlib展开,介绍了两种画图方式,阐述了figure的参数含义。在绘图设置方面,涵盖字体、颜色、风格、坐标轴等设置。还讲解了常用函数如plt.plot()、plt.legend()等的用法,提及数学表达式和特殊符号的使用,最后介绍了三维绘图的创建方式、可绘制图形及颜色条显示方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言
matplotlib没有难以理解的地方,就是琐碎的知识点比较多,特此将常用设置总结如下。

基础概念

首次接触matplotlib的时候,你肯定使用的是plt.plot()来画第一个demo吧,同样这个绘图命令也是平时使用最多的命令。虽然这个命令简单易用,但是复杂的图形绘制调整用它可就不行了。

1 两种画图方式

(plt.)系列方式和(ax.)系列方式,前一种方式是我们最常用的,它相当于对后一种方式做了封装和简化。

2 figure

matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=<class ‘matplotlib.figure.Figure’>, clear=False, **kwargs)
参数解释:

  1. num:这个参数是一个可选参数,即可以给参数也可以不给参数。可以将该num理解为窗口的属性id,即该窗口的身份标识。
    如果不提供该参数,则创建窗口的时候该参数会自增,如果提供的话则该窗口会以该num为Id存在。
  2. figsize:可选参数。整数元组,默认是无。
    提供整数元组则会以该元组为长宽,若不提供,默认为 rc fiuguer.figsize
    例如(4,4)即以长4英寸 宽4英寸的大小创建一个窗口
  3. dpi:可选参数,整数。表示该窗口的分辨率,如果没有提供则默认为 figure.dpi
  4. facecolor:可选参数,表示窗口的背景颜色,如果没有提供则默认为figure.facecolor
    其中颜色的设置是通过RGB,范围是’#000000’~’#FFFFFF’,其中每2个字节16位表示RGB的0-255。例如’#FF0000’表示R:255 G:0 B:0 即红色。
  5. edgecolor:可选参数,表示窗口的边框颜色,如果没有提供则默认为figure,edgecolor
  6. frameon:可选参数,表示是否绘制窗口的图框,默认是
  7. figureclass:暂不了解
  8. clear:可选参数,默认是false,如果提供参数为ture,并且该窗口存在的话 则该窗口内容会被清除。

绘图设置

1 字体设置

这是参考来源
共有四种方式:
1.使用指定的字体文件(修改全局字体设置,nb但是非特殊需要不用,太麻烦)

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties #步骤一
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14)#步骤二
plt.xlabel("x轴", fontproperties=font) # 步骤三
plt.ylabel("y轴", fontproperties=font)
plt.title("标题", fontproperties=font)
plt.show()

2.给每个部分分别指定字体(可以不同部分用不同的字体且不影响全局字体设置,字体必须已安装)

import matplotlib.pyplot as plt
plt.xlabel("x轴") 
plt.ylabel("y轴", fontproperties="SimSun") # 步骤一    (宋体)
plt.title("标题", fontproperties="SimHei") #          (黑体)
plt.show()

3.修改全局字体设置

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体)
plt.rcParams['axes.unicode_minus'] = False   # 步骤二(解决坐标轴负数的负号显示问题)
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.title("标题")
plt.show()

4.和第3种相似(定义格式更丰富)

import matplotlib.pyplot as plt
font = {'family' : 'SimHei',
        'weight' : 'bold',
        'size'   : '16'}
plt.rc('font', **font)               # 步骤一(设置字体的更多属性)
plt.rc('axes', unicode_minus=False)  # 步骤二(解决坐标轴负数的负号显示问题)
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.title("标题")
plt.show()

5.常用字体的英文简称
宋体 SimSun
黑体 SimHei
微软雅黑 Microsoft YaHei
微软正黑体 Microsoft JhengHei
新宋体 NSimSun
新细明体 PMingLiU
细明体 MingLiU
标楷体 DFKai-SB
仿宋 FangSong
楷体 KaiTi
隶书:LiSu
幼圆:YouYuan
华文细黑:STXihei
华文楷体:STKaiti
华文宋体:STSong
华文中宋:STZhongsong
华文仿宋:STFangsong
方正舒体:FZShuTi
方正姚体:FZYaoti
华文彩云:STCaiyun
华文琥珀:STHupo
华文隶书:STLiti
华文行楷:STXingkai
华文新魏:STXinwei

2 颜色设置

  1. 单一颜色
    颜色:color=“” 或 c=“”
    matplotlib 色卡对应参数表:
    在这里插入图片描述2. 色彩图谱

3 绘图风格

转载:所有绘图风格展示,便于挑选

#查看所有的绘图风格
plt.style.available       
#设置默认绘图风格
plt.style.use("style")       

4 坐标轴设置

  1. 设置坐标轴的上下限
xlim(最小值,最大值)#x轴
ylim(最小值,最大值)#y轴
  1. 设置坐标轴label

5 图形排布设置

  1. 设置子图间隔
fig.tight_layout()#调整整体空白
plt.subplots_adjust(wspace =0, hspace =0)#调整子图间距

6 坐标刻度及字体大小

# figsize = 11, 9
# figure, ax = plt.subplots(figsize = figsize)
x1 =[0,5000,10000, 15000, 20000, 25000, 30000, 35000, 40000, 45000, 50000, 55000]
y1=[0, 223, 488, 673, 870, 1027, 1193, 1407, 1609, 1791, 2113, 2388]
x2 = [0, 5000, 10000, 15000, 20000, 25000, 30000, 35000, 40000, 45000, 50000, 55000]
y2 = [0, 214, 445, 627, 800, 956, 1090, 1281, 1489, 1625, 1896, 2151]

# 设置输出的图片大小
figsize = 11, 9
figure, ax = plt.subplots(figsize=figsize)

# 在同一幅图片上画两条折线
A, = plt.plot(x1, y1, '-r', label='A', linewidth=5.0)
B, = plt.plot(x2, y2, 'b-.', label='B', linewidth=5.0)

# 设置图例并且设置图例的字体及大小
font1 = {'family': 'Times New Roman',
         'weight': 'normal',
         'size': 23,
         }
legend = plt.legend(handles=[A, B], prop=font1)

# 设置坐标刻度值的大小以及刻度值的字体
plt.tick_params(labelsize=23)
labels = ax.get_xticklabels() + ax.get_yticklabels()
# print labels
[label.set_fontname('Times New Roman') for label in labels]
# 设置横纵坐标的名称以及对应字体格式
font2 = {'family': 'Times New Roman',
         'weight': 'normal',
         'size': 30,
         }
plt.xlabel('round', font2)
plt.ylabel('value', font2)
plt.show()

常用函数

1 plt.plot()

参数接收值说明默认值
x,yarray表示 x 轴与 y 轴对应的数据;
colorstring表示折线的颜色;None
markerstring表示折线上数据点处的类型;None
linestylestring表示折线的类型;-
linewidth数值线条粗细1
alpha0~1之间的小数表示点的透明度;None
labelstring数据图例内容:label=‘实际数据’None

2 plt.legend()

matplotlib.legend()函数用法解析

3 plt.figure()

matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=<class 'matplotlib.figure.Figure'>, clear=False, **kwargs)

(1)num:这个参数是一个可选参数,即可以给参数也可以不给参数。可以将该num理解为窗口的属性id,即该窗口的身份标识。如果不提供该参数,则创建窗口的时候该参数会自增,如果提供的话则该窗口会以该num为Id存在。
(2)figsize:可选参数。整数元组,默认是无。提供整数元组则会以该元组为长宽,若不提供,默认为 rc fiuguer.figsize。例如(4,4)即以长4英寸 宽4英寸的大小创建一个窗口
(3)dpi:可选参数,整数。表示该窗口的分辨率,如果没有提供则默认为 figure.dpi
(4)facecolor:可选参数,表示窗口的背景颜色,如果没有提供则默认为figure.facecolor。其中颜色的设置是通过RGB,范围是’#000000’~’#FFFFFF’,其中每2个字节16位表示RGB的0-255
例如’#FF0000’表示R:255 G:0 B:0 即红色。
(5)edgecolor:可选参数,表示窗口的边框颜色,如果没有提供则默认为figure,edgecolor
(6)frameon:可选参数,表示是否绘制窗口的图框,默认是
(8)clear:可选参数,默认是false,如果提供参数为ture,并且该窗口存在的话 则该窗口内容会被清除。

plt.savefig()

savefig(fname, dpi=None, facecolor='w', edgecolor='w',
        orientation='portrait', papertype=None, format=None,
        transparent=False, bbox_inches=None, pad_inches=0.1,
        frameon=None, metadata=None)
  1. fname : 文件名
  2. dpi : [ None | scalar > 0 | ‘figure’ ]
  3. quality : [ None | 1 <= scalar <= 100 ]
  4. format : 文件格式, (‘png’, ‘pdf’, ‘svg’, … )

数学表达式和特殊符号

matplotlib 文本字符串中支持使用TeX语法,将它放在一对$中即可。
常用latex数学语法点这里。

三维绘图

1 创建三维figure的方式

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

或者

fig = plt.figure()
ax3 = Axes3D(fig)#这种方式已淘汰不建议用

2 可绘制的图形及example

参考官方文档

3 显示颜色条(指示条)

在画2d图的时候,可以使用

plt.colorbar() #显示色度条

但是在Axes3D中不行,应该像下面这样。

p=ax3.plot_surface(X,Y,Z,cmap='rainbow')
fig.colorbar(p)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值