堆叠标签并在matplotlib轴中添加分色

时间:2017-02-26 18:38:13

标签: matplotlib

我试图让我的x轴看起来像这样:

enter image description here

所以有一组刻度的“子标题”,以及我可以添加的分隔。是否有可能在matplotlib中做到这一点?如果没有,还有其他工具吗?

该例子来自Wu,Lisa等人。 “Q100:数据库处理单元的架构和设计。” ACM SIGPLAN Notices 49.4(2014):255-268。

2 个答案:

答案 0 :(得分:1)

我对此进行了尝试,诀窍是创建一个透明的覆盖轴,我可以使用它来绘制xaxis和3个cat标签附近的垂直条。希望有人比我想出更优雅的东西更聪明!

datetime.timestamp()

enter image description here

答案 1 :(得分:0)

首先,感谢daryl的评论!我已经尝试过您的解决方案,但似乎有点过于复杂。另外,我不一定要对称地绘制线条。

无论如何,我想到了另一种方式......我隐藏了所有的蜱虫,并添加了更长的额外蜱虫。我将新的刻度定位在常规刻度之间,所以我得到了我想要的线。

对于标签,我使用 xlabel 与右边对齐,只使用空格将标签对齐到所需位置。这里不是最好的解决方案,但它确实有效。

它看起来像这样:

# Modify the ticks parameters
plt.tick_params('x', bottom='on', length=80, width=1, which='major', direction='out')

# Hide all ticks
xticks = ax.xaxis.get_major_ticks()
for tick in xticks:
    tick.tick1On = False

# Calculate additional tick marks positions
t_list = list(ax.get_xticks())
t1 = (t_list[5] + t_list[4])/2
t2 = (t_list[7] + t_list[6])/2
t3 = (t_list[13] + t_list[12])/2

# Add ticks
ax.set_xticks(list(ax.get_xticks()) + [t1, t2, t3])

# Make the ticks visible
xticks = ax.xaxis.get_major_ticks()
xticks[15].tick1On = True
xticks[16].tick1On = True
xticks[17].tick1On = True

# Position the labels
plt.xlabel('L1   L2   ', fontsize=14, labelpad=10, horizontalalignment='right', x=1.0)

结果: Result