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

matplotlib,如何压缩x轴的零件

钱宇
2023-03-14
问题内容

大家好,这是我第一次在这里发布文章,希望这个问题不会太琐碎。我尝试寻找解决方案,但找不到我想要的。

我这里有这个非常简单的代码,可以绘制xy线图

x = [1,2,3,10,11]
y = [1,2,3,4,5]

plt.plot(x,y)
plt.xticks(x)

然后,图如下所示: 图

我想做的是压缩x轴,使每个点之间的间距相同。例如,3到10之间的间隔与1到2之间的间隔相同。

有没有办法做到这一点?谢谢!


问题答案:

应该这样做:

from matplotlib import pyplot as plt

fig,ax = plt.subplots()

x = [1,2,3,10,11]
y = [1,2,3,4,5]

ax.plot(y,marker='o')
ax.set_xticks([i for i in range(len(y))])
ax.set_xticklabels(x)
plt.show()

我添加了标记以更好地可视化数据点。结果看起来像这样:
发布代码的结果

编辑

如果您想直观地看到轴不连续,则可以在此答案中找到帮助。

编辑2

在我的示例中,我仅将y-values传递给plot函数,这意味着x-values被隐式计算为[1,2,3,4,5]。当然,您也可以x显式地传递每个绘图命令的-
values,从而改变x哪个绘图开始于哪个-value。对于您评论中的示例,这将是:

fig,ax = plt.subplots()

y1 = [1,2,3,4,5]
x1 = [i for i in range(len(y1))]
y2 = [2,3,4,5,6]
x2 = [i+1 for i in range(len(y2))]

xticks = list(set(x1+x2)) #or more explicit: [i for i in range(6)]
xtick_labels = [1,2,3,10,11,12]

ax.plot(x1,y1,marker='o')
ax.plot(x2,y2,marker='x')
ax.set_xticks(xticks)
ax.set_xticklabels(xtick_labels)
plt.show()


 类似资料:
  • 问题内容: 我只想绘制数组的一部分,固定x部分,但让y部分自动缩放。我尝试如下所示,但它不起作用。 有什么建议? 问题答案: 自动缩放总是使用整个数据范围,因此y轴将按y数据的全部范围缩放,而不仅仅是x范围内的缩放。 如果要显示数据的子集,那么仅绘制该子集可能是最简单的:

  • 以下是postgres 9.1数据库的一些SQL示例: 这是我的python脚本: 有没有办法防止标签相互重叠?理想情况下是以自动方式,因为我无法预测棒的数量。

  • 问题内容: 我希望在方形图上画线。 天秤和应该是相同的。 例如x的范围是0到10,在屏幕上是10厘米。y的范围也必须为0到10,并且也必须为10 cm。 即使我迷失了窗口大小,也必须保持正方形。 目前,我的图形与窗口大小一起缩放。 我该如何实现? 更新: 我尝试了以下操作,但没有成功。 问题答案: 您需要对api进行更深入的研究: set_aspect的文档

  • 问题内容: 我有一个非常简单的问题。我需要在绘图上有第二个x轴,并且我希望该轴具有一定数量的tic,它们对应于第一个x轴的特定位置。 让我们尝试一个例子。在这里,我将暗物质质量绘制为膨胀系数(定义为1 /(1 + z))的函数,该膨胀系数的范围为0到1。 我想在图的顶部放置另一个x轴,以显示对应于某些膨胀系数值的z轴。那可能吗?如果是的话,我怎么能拥有xtics斧头 问题答案: 我正在从@Dhar

  • 问题内容: 因此,当前正在学习如何在matplotlib中导入数据并使用它,即使我从书中获得了确切的代码,也遇到了麻烦。 这是该图的样子,但是我的问题是,如何在x轴的起点和终点之间没有空白的情况下得到它。 这是代码: 问题答案: 在matplotlib 2.x中,在边缘设置了自动边距,以确保数据很好地适合于轴尖。在这种情况下,在y轴上可能需要这样的余量。默认情况下,将其设置为0.05以轴跨度为单位

  • 问题内容: 任何人都可以向我展示在我一直在搜索的Java中压缩和解压缩tar.gzip文件的正确方法,但是我能找到的最多是zip或gzip(单独)。 问题答案: 我最喜欢的是plexus-archiver-请参阅GitHub上的资源。 另一个选项是Apache commons- compress- (请参阅mvnrepository)。 使用plexus-utils,用于取消存档的代码如下所示: