gpt4 book ai didi

python - matplotlib (Python) 中的分层轴标记

转载 作者:太空狗 更新时间:2023-10-30 02:41:55 24 4
gpt4 key购买 nike

假设我正在查看一个 n x n 网格,并且在每个轴上都有动物标签。但我也有兴趣研究动物的群体、亚群等之间的关系。因此,例如,我可能有脊椎动物和无脊椎动物,在脊椎动物中我可能有哺乳动物和爬行动物等等。 (如果重要的话,我对相关矩阵特别感兴趣并且实际上是通过 seaborn 使用热图......)

我想在 matplotlib 中绘制它,但沿轴有分层标签。所以使用我上面的例子,我会有狗、猫、马、蜥蜴、鳄鱼等标签,然后第一组狗到马会有哺乳动物标签,第二组蜥蜴、鳄鱼等会有有爬行动物,而这两者一起将有脊椎动物的进一步标签......

我该怎么做?

最佳答案

不幸的是,我不知道如何禁用小滴答声:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
from mpl_toolkits.axes_grid.parasite_axes import SubplotHost

fig1 = plt.figure()
ax1 = SubplotHost(fig1, 111)
fig1.add_subplot(ax1)

# Some data
x = np.arange(1,6)
y = np.random.random(len(x))

# First X-axis
ax1.plot(x, y)
ax1.set_xticks(x)
ax1.set_xticklabels(['dog', 'cat', 'horse', 'lizard', 'crocodile'])
#ax1.xaxis.set_label_text('First X-axis') # Uncomment to label axis
ax1.yaxis.set_label_text("Sample data")

# Second X-axis
ax2 = ax1.twiny()
offset = 0, -25 # Position of the second axis
new_axisline = ax2.get_grid_helper().new_fixed_axis
ax2.axis["bottom"] = new_axisline(loc="bottom", axes=ax2, offset=offset)
ax2.axis["top"].set_visible(False)

ax2.set_xticks([0.0, 0.6, 1.0])
ax2.xaxis.set_major_formatter(ticker.NullFormatter())
ax2.xaxis.set_minor_locator(ticker.FixedLocator([0.3, 0.8]))
ax2.xaxis.set_minor_formatter(ticker.FixedFormatter(['mammal', 'reptiles']))

# Third X-axis
ax3 = ax1.twiny()
offset = 0, -50
new_axisline = ax3.get_grid_helper().new_fixed_axis
ax3.axis["bottom"] = new_axisline(loc="bottom", axes=ax3, offset=offset)
ax3.axis["top"].set_visible(False)

ax3.set_xticks([0.0, 1.0])
ax3.xaxis.set_major_formatter(ticker.NullFormatter())
ax3.xaxis.set_minor_locator(ticker.FixedLocator([0.5]))
ax3.xaxis.set_minor_formatter(ticker.FixedFormatter(['vertebrates']))

ax1.grid(1)
plt.show()

enter image description here


编辑:

  1. 可以通过将 ticksize 设置为 0 来禁用小刻度(感谢@arnsholt):ax2.axis["bottom"].minor_ticks.set_ticksize(0)

  2. 在最新的 matplotlib 版本中(3.0.0 或更高版本)SubplotHost 必须导入为:

    从 mpl_toolkits.axisartist.parasite_axes 导入 SubplotHost

关于python - matplotlib (Python) 中的分层轴标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37934242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com