python数据可视化-matplotlib学习总结

目录

(一)常见的图形

1、趋势图(直线图):plot()

2、散点图:scatter():

(二)统计图形

1、柱状图:bar(

2、条形图:barh()

3、直方图:hist()

4、饼图:pie()

5、级线图:polar()

6、气泡图(散点图):scatter()

7、树状图(棉棒图):stem()

8、箱线图:boxplot()

9、误差棒图:errorbar()

 (三)图形样式

1、设置刻度样式

2、增加指示注解与无指示注解

3、标题与坐标轴的投影效果

4、转移坐标轴

5、划分窗口:subplot()

(一)常见的图形

1、趋势图(直线图):plot()

import matplotlib
matplotlib.rcParams['font.family'] = 'SimHei,Times New Roman, Arial'#设置字体格式,显示中文、正负号,罗马数字
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)  # 生成0~10之间的100个数
y = np.sin(x)  # 计算纵坐标
plt.plot(x, y)  # 绘制折线图
plt.title('Sin函数图像')  # 添加标题
plt.xlabel('x轴')  # 添加x轴标签
plt.ylabel('y轴')  # 添加y轴标签
#plt.xlim(-2,2)     #设定 x 坐标轴的显示范围在[-2,2]
#plt.axhline(y=0)    #添加水平参考线
#plt.grid()  #绘制网格线
#plt.axhline(y=0)    #绘制y=0的刻度线
#plt.axvspan(-4,2,facecolor='gray', alpha=0.3)    #添加在-4到2的垂直方向的颜色区域,填充颜色为灰色,透明度为 0.3

plt.show()  # 显示图形

pyplot 参数:

  • x:x轴数据,一般是一个数组或列表。

  • y:y轴数据,一般是一个数组或列表。

  • label:标签,用于说明数据的名称或含义。xlabel用于x轴,ylabel用于y轴

  • color或c:颜色,默认是蓝色,也可以是RGB值或颜色名称。

  • marker:点标记,用于显示每个数据点的形状。

  • linestyle或ls:线条类型,用于控制线条的样式、粗细等。

  • linewidth或lw:线条宽度,用于控制线条的宽度。

  • alpha:透明度,用于控制线条或点标记的透明度。

  • xlimylim:x轴和y轴的范围,用于设定坐标轴的刻度范围。

  • title:标题,用于给整个图形添加标题。

  • gird:绘制刻度线网格线

  • axhline:绘制平行于x轴的水平参数线

  • axvspan:绘制垂直于 x轴的水平参数区域

  • annotate:添加图形内容细节的指向型注释

  • text:添加图形内容细节的无指向型注释

  • legend:用于在图像中添加自定义的图例

 结果:

2、散点图:scatter():

import matplotlib
matplotlib.rcParams['font.family'] = 'SimHei,Times New Roman, Arial'#设置字体格式,显示中文、正负号,罗马数字
import matplotlib.pyplot as plt
import numpy as np

# 设置数据
x = np.random.rand(50)
y = np.random.rand(50)
# 绘制散点图
plt.scatter(x, y, s=50, c='b', marker='o', alpha=0.5)
# 添加标题和坐标轴标签
plt.title('散点图')
plt.xlabel('x轴')
plt.ylabel('y轴')
# 显示图像
plt.show()

参数解释:

  • x :散点图 x 轴的数据;
  • y :散点图 y 轴的数据;
  • s :散点的尺寸,即标记的大小;
  • c :散点的颜色;
  • marker :散点的形状,默认是圆形;
  • alpha :透明度,取值范围为 0~1,值越小透明度越高。

 结果:

(二)统计图形

1、柱状图:bar(

bar(x, height, width=0.8, bottom=None, align='center', data=None, **kwargs)
  • x:柱形图的 x 坐标数据;
  • height:柱形图的高度,对应于每个 x 坐标数据的高度;
  • width:柱形的宽度,默认为 0.8;
  • bottom:柱形的底部位置,默认为 None,表示将底部设定为绘图平面的 y 轴;
  • align:柱形的对齐方式,可以是 'center''edge' 等;
  • data:数据源对象,可以是多种数据类型,例如 DataFrame、Series、数组等;
  • kwargs:其他可选参数,包括柱形颜色、边框颜色、标签位置等相关设置。
import matplotlib
matplotlib.rcParams['font.family'] = 'SimHei,Times New Roman, Arial'#设置字体格式,显示中文、正负号,罗马数字
import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = ['A', 'B', 'C', 'D', 'E']
y = np.random.randint(0, 10, size=(len(x)))

# 绘制柱状图
plt.bar(x, y, width=0.6, bottom=None, align='center', alpha=0.8)

# 添加标签
for i, v in enumerate(y):
    plt.text(i, v+0.2, str(v), ha='center', fontsize=10)
# 显示图形
plt.show()

2、条形图:barh()

barh(y, width, height=0.8, left=None, align='center', data=None, **kwargs)
  • y:柱形条的 y 坐标数据;
  • width:柱形条的宽度,对应于每个 y 坐标数据的宽度;
  • height:柱形条的高度,默认为 0.8;
  • left:柱形的左侧位置,默认为 None,表示将左侧设定为绘图平面的 x 轴;
  • align:柱形的对齐方式,可以是 'center''edge' 等;
  • data:数据源对象,可以是多种数据类型,例如 DataFrame、Series、数组等;
  • kwargs:其他可选参数,包括柱形颜色、边框颜色、标签位置等相关设置。
import matplotlib
matplotlib.rcParams['font.family'] = 'SimHei,Times New Roman, Arial'#设置字体格式,显示中文、正负号,罗马数字
import matplotlib.pyplot as plt
import numpy as np

# 生成数据
y = ['A', 'B', 'C', 'D', 'E']
x = np.random.randint(0, 10, size=(len(y)))

# 绘制水平柱状图
plt.barh(y, x, height=0.6, left=None, align='center', alpha=0.8)

# 添加标签
for i, v in enumerate(x):
    plt.text(v+0.2, i, str(v), va='center', fontsize=10)

# 显示图形
plt.show()

3、直方图:hist()

hist(x, bins=None, range=None, density=False, 
    weights=None, cumulative=False, bottom=None,
    histtype='bar', align='mid', orientation='vertical',
    rwidth=None, log=False, color=None, label=None, stacked=False, 
    normed=None, **kwargs)

  • x:需要绘制直方图的数据;
  • bins:用于指定每个直方的宽度,可以是单个整数、序列或者字符串。默认为 10,表示将数据范围等分成 10 份;
  • range:需要绘制直方图的数据范围;
  • density:是否将直方图归一化,其值默认为 False;
  • weights:用于构成直方图的权重数组;
  • cumulative:是否需要绘制累积频率图,默认为 False;
  • bottom:堆叠图的底部高度;
  • histtype:指定直方图类型,可以是 'bar''barstacked''step''stepfilled' 等;
  • align:直方图的对齐方式;
  • orientation:直方图的绘制方式,可以是 'horizontal' 或者 'vertical'
  • rwidth:直方图的相对宽度,值为 1 的时候没有空隙,值为 0.5 的时候间距等于直方图宽度的一半;
  • log:是否对 y 轴进行对数变换;
  • color:直方图的颜色;
  • label:直方图的标签;
  • stacked:是否采用堆叠方式绘制直方图,默认为 False;
  • normed:已被弃用,可以使用 density 参数替代;
  • kwargs:其他可选参数,包括直方图边框、填充、颜色等相关设置。
import matplotlib
matplotlib.rcParams['font.family'] = 'SimHei,Times New Roman, Arial'#设置字体格式,显示中文、正负号,罗马数字
import matplotlib.pyplot as plt
import numpy as np

np.random.seed(2022)
data = np.random.randn(10000)

# 绘制直方图
plt.hist(data, bins=40, range=(-4, 4), density=False, alpha=0.8, color='blue')
plt.xlabel('x')
plt.ylabel('频率')
plt.title('直方图')

# bins 设为 40,表示将数据范围等分成 40 份;
# range 设为 (-4, 4),表示数据范围在[-4,4]之间
# density 设为 False,表示不需要将直方图归一化;
# alpha 设为 0.8,表示直方图颜色透明度为 0.8;
# color 设为 'blue',表示直方图颜色为蓝色;

# 显示图像
plt.show()

 

4、饼图:pie()

pie(x, explode=None, labels=None, colors=None, 
    autopct=None, pctdistance=0.6, shadow=False, 
    labeldistance=1.1, startangle=None, radius=None, counterclock=True, 
    wedgeprops=None, textprops=None, center=(0, 0), frame=False, 
    rotatelabels=False, **kwargs)
  • x:用于绘制饼图的数据,可以是数组、列表、元组等可迭代对象;
  • explode:用于指定每个饼图之间的偏移量;
  • labels:用于指定每个饼图对应的标签;
  • colors:用于指定每个饼图对应的颜色;
  • autopct:用于指定每个饼图占比的格式字符串;
  • pctdistance:用于指定占比标签距离圆心的距离;
  • shadow:是否需要添加阴影效果,默认为 False;
  • labeldistance:指定每个饼图标签与圆心的距离的倍数;
  • startangle:指定饼图开始绘制的角度,默认为 0;
  • radius:指定饼图的半径;
  • counterclock:指定饼图绘制的方向,默认为 True,即逆时针方向绘制;
  • wedgeprops:用于指定饼图环的属性,例如 linewidth、edgecolor 等;
  • textprops:用于指定占比标签的属性,例如 fontsize、color 等;
  • center:指定饼图的中心位置坐标;
  • frame:是否需要绘制边框,默认为 False;
  • rotatelabels:是否需要对饼图标签进行旋转,默认为 False;
  • kwargs:其他可选参数,包括绘图风格、字体、字号等相关设置。

import matplotlib
matplotlib.rcParams['font.family'] = 'SimHei,Times New Roman, Arial'#设置字体格式,显示中文、正负号,罗马数字
import matplotlib.pyplot as plt
import numpy as np

np.random.seed(2022)
data = np.random.randn(10000)

import matplotlib.pyplot as plt

# 生成数据
labels = ['A', 'B', 'C', 'D', 'E']
sizes = [15, 30, 45, 10, 5]
colors = ['red', 'blue', 'green', 'orange', 'gray']
explode = [0.1, 0, 0, 0, 0]

# 绘制饼图
plt.pie(sizes, explode=explode, labels=labels, colors=colors,
        autopct='%1.1f%%', shadow=True, startangle=90)

plt.axis('equal')
plt.show()

5、级线图:polar()

polar(theta, r, **kwargs)
  • theta:用于绘制极坐标图的角度数据,单位为弧度;
  • r:用于绘制极坐标图的大小数据,表示一组与角度对应的大小数据,与 theta 相对应;
  • kwargs:其他可选参数,包括极坐标的填充、颜色等相关设置。
import matplotlib
matplotlib.rcParams['font.family'] = 'SimHei,Times New Roman, Arial'#设置字体格式,显示中文、正负号,罗马数字
import matplotlib.pyplot as plt
import numpy as np

# 生成一些随机数据
theta = np.linspace(0, 2*np.pi, 1000)
r = np.random.rand(1000)

# 绘制极坐标图
plt.polar(theta, r)
plt.show()

6、气泡图(散点图):scatter()

scatter(x, y, s=None, c=None, marker=None, cmap=None, 
norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, 
edgecolors=None, plotnonfinite=False, data=None, **kwargs)
  • x:散点图的 x 坐标;
  • y:散点图的 y 坐标;
  • s:散点的大小(面积),可以是常数、数组、列表或者元组;
  • c:散点的颜色,可以是常数、数组、列表或者元组;
  • marker:散点的标记符号;
  • cmap:用于指定散点颜色的 colormap;
  • norm:用于指定 colormap 的归一化方法;
  • vmin:用于指定 colormap 的最小值;
  • vmax:用于指定 colormap 的最大值;
  • alpha:散点的透明度;
  • linewidths:用于指定散点边缘线宽度;
  • edgecolors:用于指定散点边缘线颜色,默认为 'face',表示使用散点颜色;
  • plotnonfinite:是否需要绘制非有限数值,默认为 False;
  • data:数据源对象,可以是多种数据类型,例如 DataFrame、Series、数组等;
  • kwargs:其他可选参数,包括散点颜色、边缘线颜色、标签位置等相关设置
import matplotlib
matplotlib.rcParams['font.family'] = 'SimHei,Times New Roman, Arial'#设置字体格式,显示中文、正负号,罗马数字
import matplotlib.pyplot as plt
import numpy as np

# 生成数据
np.random.seed(2022)
x = np.random.randn(50)
y = np.random.randn(50)
colors = np.random.randint(0, 10, 50)

# 绘制散点图
plt.scatter(x, y, s=20*abs(x+y)+100, c=colors, cmap='viridis', alpha=0.8)

# 添加红色边缘线
plt.scatter(x, y, s=20*abs(x+y)+100, facecolors='none', edgecolors='red', linewidths=1)

# 添加标题和坐标轴标签
plt.title('气泡图')
plt.xlabel('X')
plt.ylabel('Y')

# 显示图像
plt.show()

7、树状图(棉棒图):stem()

stem(x, y, linefmt=None, markerfmt=None, basefmt=None, bottom=None, 
    label=None, use_line_collection=None, data=None, **kwargs)
  • x:树状图的 x 坐标;
  • y:树状图的 y 坐标;
  • linefmt:用于指定树状图线段的格式字符串;
  • markerfmt:用于指定树状图标记的格式字符串;
  • basefmt:用于指定树状图基线的格式字符串;
  • bottom:使用堆叠样式绘制树状图时的基线高度;
  • label:树状图的标签;
  • use_line_collection:是否使用 LineCollection 来绘制线段,默认为 True;
  • data:数据源对象,可以是多种数据类型,例如 DataFrame、Series、数组等;
  • kwargs:其他可选参数,包括线段样式、标记样式、标签位置等相关设置。
# 生成数据
np.random.seed(2022)
x = np.linspace(0.0, 2.0*np.pi, 100)
y = np.sin(x)

x = np.arange(0, 10, 1)
y = np.random.rand(10)

# 绘制离散波形图
plt.stem(x, y)
plt.show()

8、箱线图:boxplot()

boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, 
    widths=None, patch_artist=None, bootstrap=None, usermedians=None, 
    conf_intervals=None, meanline=None, showmeans=None, showcaps=None, 
    showbox=None, showfliers=None, boxprops=None, labels=None, 
    flierprops=None, medianprops=None, meanprops=None, capprops=None, 
    whiskerprops=None, manage_xticks=True, autorange=False, zorder=None, 
    data=None)
  • x:箱线图的数据,可以是数组、列表、DataFrame 等;
  • notch:是否绘制缺口,默认为 False,表示绘制箱线图而非半个月牙形的齿状图;
  • sym:用于指定离群点的标记符号,默认为 None
  • vert:是否绘制竖向的箱线图,默认为 True
  • whis:用于指定箱线图的上下位置(须)的长度,默认为 1.5
  • positions:用于指定箱线图的位置,默认为 [1, 2, ..., n],其中 n 为数据列数量;
  • widths:用于指定箱线图的宽度;
  • patch_artist:是否允许填充箱线图,主要用于自定义颜色和样式,默认为 False
  • bootstrap:用于指定计算置信区间的样本数;
  • usermedians:手动指定中位数值;
  • conf_intervals:用于指定计算置信区间方法和置信水平,默认为 None
  • meanline:是否绘制均值线,默认为 False
  • showmeans:是否显示均值值,默认为 False,通常不建议显示;
  • showcaps:是否显示箱线图末端的 whisker 线段,默认为 True
  • showbox:是否显示箱线图框体,默认为 True
  • showfliers:是否显示离群点,默认为 True
  • boxprops:用于指定箱线图框体的属性,例如 linewidth、edgecolor 等;
  • labels:用于指定箱线图的标签;
  • flierprops:用于指定离群点的属性,例如 markersize、markerfacecolor 等;
  • medianprops:用于指定中位数线的属性,例如 linewidth、color 等;
  • meanprops:用于指定均值线的属性,例如 linewidth、linestyle、color 等;
  • capprops:用于指定箱线图 whisker 线段末端的帽子的属性,例如 linewidth、linestyle、color 等;
  • whiskerprops:用于指定箱线图 whisker 线段的属性,例如 linewidth、linestyle、color 等;
  • manage_xticks:是否需要自动管理 x 轴刻度,默认为 True
  • autorange:是否自动调整坐标轴范围,默认为 False
  • zorder:用于指定图层顺序,通常不需要设置;
  • data:数据源对象,可以是多种数据类型,例如 DataFrame、Series、数组等。
import matplotlib
matplotlib.rcParams['font.family'] = 'SimHei,Times New Roman, Arial'#设置字体格式,显示中文、正负号,罗马数字
import matplotlib.pyplot as plt
import numpy as np

# 生成一些随机数据
data = np.random.randn(100, 5)

# 绘制箱线图
plt.boxplot(data)
plt.show()

 

9、误差棒图:errorbar()

errorbar(x, y, yerr=None, xerr=None, fmt='', ecolor=None, elinewidth=None, 
    capsize=None, barsabove=False, lolims=False, uplims=False, xlolims=False, 
    xuplims=False, errorevery=1, capthick=None, label='', **kwargs)
  • x:误差棒图的 x 坐标;
  • y:误差棒图的 y 坐标;
  • yerr:用于指定误差范围的垂直线段长度,可以使数字、标量或者数组;
  • xerr:用于指定误差范围的水平线段长度,可以使数字、标量或者数组;
  • fmt:用于指定点的颜色、线型和标记符号的格式;
  • ecolor:用于指定误差线段和帽子的颜色;
  • elinewidth:用于指定误差线段的线宽;
  • capsize:用于指定误差帽子的大小;
  • barsabove:是否将误差棒图绘制在数据点之上;
  • lolims:是否绘制小于数据点的下限误差;
  • uplims:是否绘制大于数据点的上限误差;
  • xlolims:是否绘制小于数据点的水平下限误差;
  • xuplims:是否绘制大于数据点的水平上限误差;
  • errorevery:用于指定错误条目的抽样间隔;
  • capthick:用于指定误差帽子的线宽;
  • label:标注名称;
  • kwargs:其他可选参数,包括误差帽子哪里停止等相关设置。
import matplotlib
matplotlib.rcParams['font.family'] = 'SimHei,Times New Roman, Arial'#设置字体格式,显示中文、正负号,罗马数字
import matplotlib.pyplot as plt
import numpy as np

#生成数据
x = np.arange(0, 10, 1)
y = np.random.rand(10)
yerr = np.random.rand(10) * 0.2

# 绘制带误差线的散点图
plt.errorbar(x, y, yerr=yerr, fmt='o')
plt.show()

 (三)图形样式

1、设置刻度样式

设置刻度样式需要两个方法:xticks与yticks:

xticks(ticks=None, labels=None, **kwargs)
yticks(ticks=None, labels=None, **kwargs)
  • ticks:用于设置刻度位置的序列或者数组;
  • labels:用于设置刻度标签的序列或者数组;
  • kwargs:其他可选参数,例如字体、字号、旋转角度等。

常用场景

设置刻度标签字体大小

import matplotlib.pyplot as plt

# 创建图形,并设置 x 轴、y 轴刻度标签字体大小为 14
fig, ax = plt.subplots()
ax.tick_params(axis='both', labelsize=14)

 设置刻度间隔和范围

import numpy as np
import matplotlib.pyplot as plt

# 创建图形并绘制曲线
x = np.linspace(0, 10, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)

# 设置 x 轴刻度范围为 0 到 10,刻度间隔为 2
ax.set_xticks(np.arange(0, 11, 2))

自定义刻度标签

import numpy as np
import matplotlib.pyplot as plt

# 创建图形并绘制曲线
x = np.linspace(0, 10, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)

# 自定义 y 轴刻度标签
ax.set_yticks([-1, 0, 1])
ax.set_yticklabels(['Low', 'Medium', 'High'])

隐藏刻度

import numpy as np
import matplotlib.pyplot as plt

# 创建图形并绘制曲线
x = np.linspace(0, 10, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)

# 隐藏 y 轴刻度
ax.tick_params(axis='y', which='both', length=0)

2、增加指示注解与无指示注解

添加指示注解:

annotate(text, xy, xytext=None, arrowprops=None, **kwargs)
  • text:注释文本内容;
  • xy:注释目标坐标,表示箭头所在位置;
  • xytext:注释文本的位置,如果未指定则默认为 xy 参数;
  • arrowprops:箭头的属性,可以指定箭头的长度、宽度、颜色等;
  • kwargs:其他一些可选参数,包括文本颜色、字体、字号等。

import matplotlib
matplotlib.rcParams['font.family'] = 'SimHei,Times New Roman, Arial'#设置字体格式,显示中文、正负号,罗马数字
import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = np.linspace(0, 1, 100)
y = np.sin(x*10)

# 绘制 sin(x) 的图像
plt.plot(x, y)

# 添加注释:最大值处对应的 x 坐标和 y 坐标
max_y = np.max(y)
max_idx = np.argmax(y)
plt.annotate(f'Max={max_y:.2f}', xy=(x[max_idx], max_y),
             xytext=(x[max_idx]-0.2, max_y+0.3),
             arrowprops=dict(arrowstyle='->', lw=2))

# 显示图形
plt.show()

添加无指示注解

text(x, y, s, fontdict=None, withdash=False, **kwargs)
  • x 和 y:文本框的位置,可以是图像坐标、数据坐标或者坐标轴分数坐标等;
  • s:文本标签内容;
  • fontdict:字体属性参数,支持字体、字号、颜色等相关设置;
  • withdash:文本边框属性,可以设置是否使用虚线边框;
  • kwargs:其他可选参数,包括纵横比、文本排列、旋转角度、对齐方式等相关设置。
import matplotlib
matplotlib.rcParams['font.family'] = 'SimHei,Times New Roman, Arial'#设置字体格式,显示中文、正负号,罗马数字
import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = np.linspace(-5, 5, 100)
y = np.sin(x)

# 绘制 sin(x) 的图像
plt.plot(x, y)

# 添加文本标签:最大值处对应的 x 坐标和 y 坐标
max_y = np.max(y)
max_idx = np.argmax(y)
plt.text(x[max_idx], max_y, f'Max={max_y:.2f}', fontsize=12,
         color='red', ha='center', va='bottom')

# 显示图形
plt.show()

3、标题与坐标轴的投影效果

设置投影效果需要用到set_path_effects()

import matplotlib
matplotlib.rcParams['font.family'] = 'SimHei,Times New Roman, Arial'#设置字体格式,显示中文、正负号,罗马数字
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.patheffects as pe

x = np.linspace(0, 10, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)

ax.plot(x, y)
ax.set_title('sin(x)')

# 设置标题阴影效果
title_text_obj = ax.set_title('Title', fontsize=18, fontweight='bold')
title_text_obj.set_path_effects([pe.withStroke(linewidth=2, foreground='gray')])

# 设置坐标轴标签阴影效果
x_label_obj = ax.set_xlabel('X Label', fontsize=16)
y_label_obj = ax.set_ylabel('Y Label', fontsize=16)
x_label_obj.set_path_effects([pe.withStroke(linewidth=1, foreground='gray')])
y_label_obj.set_path_effects([pe.withStroke(linewidth=1, foreground='gray')])

plt.show()

4、转移坐标轴

转移坐标轴需要用到set_zorder方法

import matplotlib
matplotlib.rcParams['font.family'] = 'SimHei,Times New Roman, Arial'#设置字体格式,显示中文、正负号,罗马数字
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
fig, ax = plt.subplots()

ax.plot(x, y)
ax.set_title('sin(x)')

# 将 x 轴和 y 轴的刻度放到图形的顶部和右侧
ax.xaxis.tick_top()
ax.yaxis.tick_right()

# 设置标题和坐标轴的深度值
ax.title.set_zorder(1)
ax.xaxis.label.set_zorder(1)
ax.yaxis.label.set_zorder(1)
ax.xaxis.set_tick_params(pad=10, zorder=1)
ax.yaxis.set_tick_params(pad=10, zorder=1)

# 设置坐标轴投影线条的样式和深度值
ax.spines['bottom'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.spines['top'].set_linestyle('-')
ax.spines['right'].set_linestyle('-')
ax.spines['top'].set_zorder(0)
ax.spines['right'].set_zorder(0)

plt.show()

 

5、划分窗口:subplot()

subplot(nrows, ncols, index, **kwargs)
  • nrows:子图表格的行数;
  • ncols:子图表格的列数;
  • index:子图在表格中的位置(从左到右、从上到下的编号);
  • kwargs:其他可选参数,例如坐标轴刻度、标题、标签字体等。
import matplotlib
matplotlib.rcParams['font.family'] = 'SimHei,Times New Roman, Arial'#设置字体格式,显示中文、正负号,罗马数字
import matplotlib.pyplot as plt
import numpy as np

#生成数据
np.random.seed(2022)
x = np.linspace(0.0, 4.0*np.pi, 100)
y_sin = np.sin(x)
y_cos = np.cos(x)

# 绘制正弦函数
plt.subplot(2, 1, 1)
plt.plot(x, y_sin, 'g-', linewidth=2, label='sin(x)')
plt.legend(loc='upper right')
plt.title('Sin(x)与Cos(x)')

# 绘制余弦函数
plt.subplot(2, 1, 2)
plt.plot(x, y_cos, 'r-', linewidth=2, label='cos(x)')
plt.legend(loc='lower right')

plt.xlabel('X')

# 显示图像
plt.show()

猜你喜欢

转载自blog.csdn.net/weixin_49349476/article/details/131046975