首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在matplotlib中启用sharex时自定义刻度标签

在matplotlib中启用sharex时自定义刻度标签
EN

Stack Overflow用户
提问于 2016-06-24 21:25:06
回答 2查看 1.4K关注 0票数 1

我有两个堆叠的子图,它们共享x轴,对于这两个子图,刻度的可见性都设置为false,因为我不想看到刻度标签。在绘制了这两个子图之后,我想在x-asis上添加一些额外的标记,仅用于第二个子图,但它们不必成为主要标记。我的意思是,这样做:

代码语言:javascript
复制
        #xticks = list of x points
        #xlabs = list of labels
        #secondplot.set_xticks(xticks) 
        #secondplot.set_xticklabels(xlabs)

将根据这些新刻度更改第一个子绘图网格,就像它们成为新的主刻度一样。有没有一种方法可以在不影响整个绘图区域的情况下,只标记第二个子图中的一些x轴点?谢谢

EN

回答 2

Stack Overflow用户

发布于 2018-11-23 16:58:39

我知道我来晚了,但我也遇到了类似的问题,我想分享我的解决方案,以防其他人需要帮助。

可以使用matplotlib.axes.Axes.tick_params来控制轴的主要记号和次要记号的样式。将第一个子图的刻度长度设置为0应该可以实现此目的:

代码语言:javascript
复制
ax.tick_params(axis="x", which="both", length=0.)

轴("x“、"y”或"both")选择设置对其产生影响的轴,其中(“重大”、“次要”或“两者”)选择刻度类型。当然,您还可以使用ax.set_xticks(ticks, minor=False)设置主要刻度和次要刻度。完整的示例:

代码语言:javascript
复制
import matplotlib.pyplot as plt

fig, axarr = plt.subplots(2, 1, sharex="col")
axarr[0].plot(range(11))
axarr[1].plot(range(11)[::-1])

axarr[0].tick_params(axis="x", which="both", length=0.)
axarr[1].set_xticks(range(0, 11, 3))
axarr[1].set_xticks(range(0, 11), minor=True)

plt.show()

结果是:https://i.stack.imgur.com/oc7y0.png

票数 2
EN

Stack Overflow用户

发布于 2016-06-25 04:30:40

这适用于在使用sharex时从单个轴中删除刻度标签,但我看不到也可以删除刻度的解决方案。

代码语言:javascript
复制
import matplotlib.pylab as pl

pl.figure()
ax1=pl.subplot(211)
ax1.plot([0,10],[0,10])

ax2=pl.subplot(212, sharex=ax1)
ax2.plot([0,10],[10,0])

pl.setp(ax1.get_xticklabels(), visible=False)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38014571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档