【问题标题】:Modifying axes and labels of overlaid matplotlib修改覆盖 matplotlib 的轴和标签
【发布时间】:2020-10-06 16:15:26
【问题描述】:

我在格式化 seaborn 图表时遇到了问题,我在其中重叠了两个图表(线和条)。假设我到目前为止有以下代码:

fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
df1["a"].plot(kind='bar', color='blue', ax=ax1)
df2["b"].plot(kind='line', marker='d', ax=ax2)
ax.set_xticklabels(('2015', '2016', '2017', '2018', '2019', '2020'))
ax1.yaxis.tick_right()
ax1.set_ylabel('Label A')
ax2.yaxis.tick_left()
ax2.set_ylabel('Label B')
ax1.set_xticklabels(('2015', '2016', '2017', '2018', '2019', '2020'))
plt.show()

产生这样的东西:

如果我能获得以下方面的建议,我将不胜感激:

  • 避免标签和刻度重叠
  • 将标签 B 轴设为 0 ~ 100 的百分比(是的,我的大部分数据都徘徊在 30% 左右,但我想指出它有多低。)基本上,我想尝试 axes.ylim(( "0","100")) 但它对我不起作用。
  • 显示每个条的整​​个宽度(第一个和最后一个条被轴切割,但我真的不知道如何避免它)

非常抱歉,如果我在这里犯了一些基本错误,但这将非常有帮助,因为在我的在线课程中似乎没有人积极参与查询。

*编辑: 请注意,我的屏幕截图在其中一个 y 轴上有非常大的数字,因为我刚刚为我的实际工作笔记本拍照。但是,请随意使用以下示例数据集进行演示:

df1 =  [39, 30, 40, 36, 28, 42]
df2 = [5, 8, 7, 3, 2, 6]

【问题讨论】:

  • 我也关心左上角的1​​e11,表示y轴上的“8”不是8,而是800,000,000,000。那是你要的吗?如果您能提供一个 minimal 但显示相同问题并且我们可以运行的 mcve 将是最好的(只需为其制作一些假数据,例如 data1 = [4, 3, 7, 7, 2, 6] 或其他)。跨度>
  • 感谢您的指出。我正在处理的实际代码(我截取图表的地方)有大量的总预算。 (我不妨稍后将它们清理成 xx 百万/千形式...)但是是的,我可能会放一个随机样本数据框以防万一!

标签: python matplotlib graph seaborn


【解决方案1】:

让我们尝试用代码解决您的问题:

from matplotlib import ticker

fig, ax1 = plt.subplots()
ax2 = ax1.twinx()

# don't try to force tick left/right. Swap the axes
df1["a"].plot(kind='bar', color='blue', ax=ax2)
df2["b"].plot(kind='line', marker='d', ax=ax1)
ax1.set_xticklabels(('2015', '2016', '2017', '2018', '2019', '2020'))

# disable these
# ax1.yaxis.tick_right()
# ax2.yaxis.tick_left()

# format to percentage
ax2.yaxis.set_major_formatter(ticker.StrMethodFormatter("{x}%"))

ax1.set_ylabel('Label B')
ax2.set_ylabel('Label A')

fig.tight_layout()
plt.show()

你会得到这样的结果:

【讨论】:

  • 非常感谢您在这里帮助我。我能够按照我的意愿对齐轴和 x 轴刻度的标签!如果可能的话,我也很想知道如何将 y 轴(百分比)也缩小(即 0% ~ 100%)。我尝试设置 y-lim("0", "100") 但 ax 似乎没有该属性。 :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
  • 2020-07-02
  • 1970-01-01
  • 2020-03-29
相关资源
最近更新 更多