关于python:Matplotlib:绘制两个x轴,一个线性和一个对数刻度

您所在的位置:网站首页 python双对数图 关于python:Matplotlib:绘制两个x轴,一个线性和一个对数刻度

关于python:Matplotlib:绘制两个x轴,一个线性和一个对数刻度

2024-04-28 18:20| 来源: 网络整理| 查看: 265

(大量编辑:)

在python matplotlib中,我想针对具有两个xscale的x绘制y对x,较低的一个带有线性刻度,上方的一个带有对数刻度。

较低的x值是较高值的任意函数(在这种情况下,映射为func(x)=np.log10(1.0+x))。 推论:较高的x刻度位置与较低的相同。

两个轴的数据点位置和刻度位置必须解耦。

我希望上轴的对数刻度位置和标签尽可能整齐。

产生这种情节的最佳方法是什么?

相关:http://matplotlib.1069221.n5.nabble.com/Two-y-axis-with-twinx-only-one-of-them-logscale-td18255.html

类似(但未回答)的问题?:Matplotlib:如何在对数图中设置双轴刻度

可能有用:https://stackoverflow.com/a/29592508/1021819

相关讨论 您是否尝试过twiny()? @BusyBeaver我还没有(twinx()?)-您能给出答案吗? 您想在两个x-axis之间共享y-axis(对吗?),所以twiny() 啊-是-正确 Matplotlib的可能重复项:twinx()在第二轴上的值错误?当然是密切相关的,但是从当前问题的内容来看,我不确定期望的结果是什么。 @ saintsfan342000我应该尝试一些示例代码吗?我想保持清晰,希望在文字上有用,而不是提供半熟的代码。什么还不清楚? 编辑-我想知道这是一个难题还是我的问题不清楚。如果我们能深入浅出,我认为这将是有用的。 问题是,当刻度之间的关系为非线性时,您无法使用两个不同刻度的轴在相同位置显示相同数据。那是数学。您可以做的是使用两个相似的刻度,但刻度标记不同。现在的问题是,鉴于此,期望的结果确实不清楚,因此您没有收到任何有用的答案。

您可能会发现Axes.twiny()和Axes.semilogx()有用。

12345678910111213141516import numpy as np import matplotlib.pyplot as plt fig, ax1 = plt.subplots() x = np.arange(0.01, 10.0, 0.01) # x-axis range y = np.sin(2*np.pi*x) # simulated signal to plot ax1.plot(x, y, color="r") # regular plot (red) ax1.set_xlabel('x') ax2 = ax1.twiny() # ax1 and ax2 share y-axis ax2.semilogx(x, y, color="b") # semilog plot (blue) ax2.set_xlabel('semilogx') plt.show()

相关讨论 谢谢-有用的开始-我已将其中一些添加到我的编辑中 我看到了您的编辑...为什么更改x-axis比例,红叉需要与黑点重合? 我想要一组数据点(只有一个数据系列)。我接受了您的想法,但它给出了上述建议;我需要对x的上轴进行操作以使其实现-我想看看y和z和log10(1+z)的变化情况。 例如,在您的绘图中,顶部10 ^ 0是否应与底部1.0对齐? 但这不是半对数图的工作原理。如果将10**0与1.0对齐,那么蓝色图将与红色图完全匹配,并且您将失去半对数表示法,这是您首先要问的。也就是说,如果顶部的10 ^ 0应该与底部的1.0对齐,那么就像在红色信号上方重新绘制相同的信号一样。 但是最上面的是对数刻度?我想要对数刻度在顶部,线性刻度在底部。 现在您完全迷失了我:)您是否不想对信号进行半对数绘制(蓝色信号),但是只想绘制红色信号并在上面的x-axis上显示"更多"刻度? 谢谢!根据您的讨论,我已使用您的ticky()技巧添加了一个答案-即将修正该问题,以使其更合理。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3