当前位置: 首页 > 面试题库 >

matplotlib:如何降低子地块中记号标签的密度?

壤驷鸿祯
2023-03-14
问题内容

我希望降低不同子地块上的刻度标签密度

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
from StringIO import StringIO
data = """\
    a   b   c   d
z   54.65   6.27    19.53   4.54
w   -1.27   4.41    11.74   3.06
d   5.51    3.39    22.98   2.29
t   76284.53    -0.20   28394.93    0.28
"""
df = pd.read_csv(StringIO(data), sep='\s+')
gs = gridspec.GridSpec(3, 1,height_ratios=[1,1,4] )
ax0 = plt.subplot(gs[0])
ax1 = plt.subplot(gs[1])
ax2 = plt.subplot(gs[2])
df.plot(kind='bar', ax=ax0,color=('Blue','DeepSkyBlue','Red','DarkOrange'))
df.plot(kind='bar', ax=ax1,color=('Blue','DeepSkyBlue','Red','DarkOrange'))
df.plot(kind='bar', ax=ax2,color=('Blue','DeepSkyBlue','Red','DarkOrange'),rot=45)
ax0.set_ylim(69998, 78000)
ax1.set_ylim(19998, 29998)
ax2.set_ylim(-2, 28)
ax0.legend().set_visible(False)
ax1.legend().set_visible(False)
ax2.legend().set_visible(False)
ax0.spines['bottom'].set_visible(False)
ax1.spines['bottom'].set_visible(False)
ax1.spines['top'].set_visible(False)
ax2.spines['top'].set_visible(False)
ax0.xaxis.set_ticks_position('none')
ax1.xaxis.set_ticks_position('none')
ax0.xaxis.set_label_position('top')
ax1.xaxis.set_label_position('top')
ax0.tick_params(labeltop='off')
ax1.tick_params(labeltop='off', pad=15)
ax2.tick_params(pad=15)
ax2.xaxis.tick_bottom()
d = .015
kwargs = dict(transform=ax0.transAxes, color='k', clip_on=False)
ax0.plot((-d,+d),(-d,+d), **kwargs)
ax0.plot((1-d,1+d),(-d,+d), **kwargs)
kwargs.update(transform=ax1.transAxes)
ax1.plot((-d,+d),(1-d,1+d), **kwargs)
ax1.plot((1-d,1+d),(1-d,1+d), **kwargs)
ax1.plot((-d,+d),(-d,+d), **kwargs)
ax1.plot((1-d,1+d),(-d,+d), **kwargs)
kwargs.update(transform=ax2.transAxes)
ax1.plot((-d,+d),(1-d/4,1+d/4), **kwargs)
ax1.plot((1-d,1+d),(1-d/4,1+d/4), **kwargs)
plt.show()

结果呢![输入图像描述]
这里
我想减少上面两个子地块的记号标签。怎么做
? 谢谢。
奖励:1)如何去除条形图上y=0的虚线?
2) 如何去除子图0和1之间的x-trick标签?3) 如何设置
后面的情节要透明吗?(请参见右下角断开的y轴线。)
消失在情节背后)


问题答案:

您可以像设置xticks一样,将记号设置到您想要的位置。

import numpy as np
ax0.yaxis.set_ticks(np.arange(70000,80000,2500))

这将为ax0子批创建四个等距的记号。你能做到的
其他子地块也有类似的情况。



 类似资料:
  • 在Matplotlib中创建子地块数组时,有没有一种方法可以完全去掉勾号标签?我目前需要根据绘图对应的较大数据集的行和列指定每个绘图。我尝试使用ax.setxticks([])和类似的y轴命令,但没有成功。 我认识到,这可能是一个不寻常的要求,希望作出一个绘图没有轴数据,但这是我需要的。我需要它自动应用于数组中的所有子地块。

  • 我试图使用matplotlib构建一个信息图表,我想左对齐所有y轴的刻度标签。 我想把所有的刻度标签移到左边——我想让它们都从与哥伦比亚特区相同的x位置开始。 我试图使用做到这一点,但我不知道如何做到这一点。

  • 我有一个数据框架,df,就像: 我想绘制两个垂直条形图,每个大陆一个,并排,共享相同的y轴。我已经完成了90%的工作,除了将条的高度添加到子图中。到目前为止,我的代码: 我在这里和那里看到过带有标签的示例,但这些往往只适用于一个条形图,而不是几个子图。

  • 我基于matplotlib中的:热图和pcolor? 我了解了如何在Matplotlib中更改记号标签和轴标签之间的分隔,但这不是我所需要的 如何固定标签的位置,使其与刻度对齐?

  • 我试图创建一个由2x2网格组成的图形,其中每个象限有两个垂直堆叠的子图(即2x1网格)。不过,我似乎不知道如何实现这一点。 我得到的最接近的是使用gridspec和一些丑陋的代码(见下文),但是因为改变了所有子图的行间距,所以我仍然不在我想去的地方。 理想情况下,我想要的是,以下图为例,减少每个象限内子地块之间的间距,同时增加顶部和底部象限之间的垂直间距(即1-3和2-4之间)。 有没有办法做到这

  • 我想沿x轴水平移动一些记号的标签,而不移动相应的记号。 更具体地说,当使用