透视Matplotlib核心功能和工具包 - axes_grid1工具包

axes_grid1工具包旨在提供一组帮助器类,以在网格中绘制带有颜色条的图像,并且颜色条与图像大小正确对齐。 它可用于放大图像的一部分,绘制插入轴(类似于图片中的图片),绘制二维图和两个变量,寄生轴和锚定艺术家中每个变量的关联直方图。

使用axisartst和axesgrid1工具箱绘制双轴

在此,我们将学习如何使用Matplotlib twinx主方法以及axisartist和axes_grid1工具包在多个y轴上绘制多个比例尺。

导入所需库:

import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator

步骤细节:

  • 如下定义图形和主轴(ax1,左侧的y轴):
fig, ax1 = plt.subplots(1,1)
  • 定义双轴(ax2,右侧的y轴,ax3,右侧的另一个y轴):
ax2 = ax1.twinx()
ax3 = ax1.twinx()
  • 放置ax3,使其与右轴ax2不重叠:
ax3.spines['right'].set_position(('axes', 1.15))
  • 准备数据并在主轴ax1上绘制产品缺陷条形图:
x = [0, 1, 2, 3, 4, 5]
y = [19, 12, 6, 4, 3, 2]
b = ax1.bar(x, y, label='Number of Defects')
  • 在右轴ax2的折线图上,准备数据并按百分比绘制累积缺陷。
y = [41, 67, 80, 89, 96, 100]
l, = ax2.plot(x, y, color='g', lw=5, label='Cumulative Defects as %')
  • 准备数据并在第二个右轴ax3上绘制累积的缺陷计数折线图:
y = [19, 31, 37, 41, 44, 46]
l1, = ax3.plot(x, y, color='m', lw=5, label='Cumulative Defects 
               Count')
  • 定义步长为2的主轴定位器,并将其应用于主轴的y轴ax1:
majorLocator = MultipleLocator(2)
ax1.yaxis.set_major_locator(majorLocator)
  • 使用以下代码设置x和y标签以及所有轴的限制:
ax1.set(xlabel='Defect Reason Codes', ylabel='Number of Defects')
ax2.set(ylabel='Cumulative Defects as %')
ax3.set_ylim(15,50)
ax3.set_ylabel('Cumulative Defects Count', labelpad=10)
  • 如下设置主轴的图例和标题:
graphs = [b, l, l1]
ax1.legend(graphs, [g.get_label() for g in graphs], loc=5)
ax1.set_title('Product Defects - August 2018')
  • 设置标签的颜色:
ax1.yaxis.label.set_color(b.patches[0].get_facecolor())
ax2.yaxis.label.set_color(l.get_color())
ax3.yaxis.label.set_color(l1.get_color())
  • 设置两个右轴的颜色,如下所示:
ax2.spines['right'].set_edgecolor(l.get_color())
ax3.spines['right'].set_edgecolor(l1.get_color())
  • 设置刻度和刻度标签的颜色,如下所示:
ax1.tick_params(axis='y', colors=b.patches[0].get_facecolor())
ax2.tick_params(axis='y', colors=l.get_color())
ax3.tick_params(axis='y', colors=l1.get_color())
  • 使用以下命令在屏幕上显示图形:
plt.show()

分解代码

  • ax2 = ax1.twinx()和ax3 = ax1.twinx()创建称为ax2和ax3的逻辑轴,它们共享主轴的x轴(ax1),但右侧具有不同的y轴。
  • ax3.spines [‘right’].set_position((‘axes’,1.15))将第二个y轴向右移动主轴宽度的15%。 如果我们不这样做,则ax2和ax3 y轴将相互重叠,并在同一轴上同时显示它们的刻度和刻度标签。
  • x = [0,1,2,3,4,5]是产品缺陷代码列表,y = [19,12,6,4,3,2]是缺陷原因代码列表。
  • b = ax1.bar(x, y, label=‘Number of Defects’)绘制产品缺陷数的条形图。
  • y1 = [41, 67, 80, 89, 96, 100] 是累积缺陷占总数百分比的列表。
  • l1, = ax3.plot(x, y2, color=‘m’, lw=5, label=‘Cumulative Defects Count’)将其绘制为折线图。
  • majorLocator = MultipleLocator(2)定义步长为2的定位器,ax1.yaxis.set_major_locator(majorLocator)将定位器应用到主轴a1的y轴上。
  • ax3.set_ylabel(‘Cumulative Defects Count’, labelpad=10)设置最右边的轴的y轴标签,而labelpad = 10指定轴与其标签之间的间隙,以便标签不与轴的刻度标签重叠。
  • ax1.legend(graphs, [g.get_label() for g in graphs], loc=5)绘制图例如下:
    • [g.get_label() for g in graphs]获取在绘制图形时设置的每个图形的标签列表。
    • loc = 5指定将图例绘制在轴的右侧。
  • ax1.yaxis.label.set_color(b.patches[0].get_facecolor())如下设置主轴的y轴标签的颜色:
    • b.patches[0].get_facecolor()获取条形图中第一个条的facecolor值,b.patches []是另存为色块的条的容器。
    • 使用此命令,而不是显式设置颜色,我们将使用用于绘制图形的颜色并将其用于y轴标签。
  • ax2.yaxis.label.set_color(l.get_color()) and ax3.yaxis.label.set_color(l1.get_color())获取线图ll1的颜色,并将它们应用于各自的标签。
  • ax2.spines[‘right’].set_edgecolor(l.get_color())设置右轴的颜色,用于绘制折线图l。
  • ax3.spines[‘right’].set_edgecolor(l1.get_color()) 设置第二个右轴的颜色,用于绘制线图l1。
  • ax1.tick_params(axis=‘y’, colors=b.patches[0].get_facecolor())设置刻度和刻度标签的颜色。

执行上述代码后,您应该在屏幕上看到以下图形:

详情参阅 - 亚图跨际

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值