【发布时间】:2016-01-05 09:51:03
【问题描述】:
我认为这是一个简单的问题,但我似乎仍然想不出一个简单的解决方案。我有一组分子丰度数据,其值范围为多个数量级。我想用boxplots (box-and-whiskers plots) 来表示这些丰度,并且由于值的范围很广,我希望在对数刻度上计算这些框。
我知道我可以只计算数据的 log10 并将其发送到 matplotlib 的boxplot,但这不会在以后的图中保留对数刻度。
所以我的问题基本上是这样的: 当我根据我的值的 log10 计算出箱线图时,我如何转换之后的绘图以对数刻度显示,而不是与 log10 值呈线性关系? 我可以更改刻度标签以部分解决此问题,但我不知道如何将对数刻度带回绘图。
或者有另一种更直接的方法来绘制这个。可能已经包含此选项的其他软件包?
非常感谢您的帮助。
【问题讨论】:
-
为什么不将您的 log10 计算值转换回正常值 (
10**y) 并将 y 比例设置为对数? -
也许我应该澄清一下,我创建了这样的情节:
bp = ax.boxplot(np.log10(abunds))。此命令计算框值并创建绘图。我需要改变情节中的东西,而不是价值观,对吧? -
按照你的做法,你正在策划不同的事情。我还是不明白为什么你不能做
bp = ax.boxplot(abunds); ax.set_yscale('log')。这将为您提供对数刻度,因此 y 刻度与您的值正确对应。 -
因为日志值为负数(值为 10^(-4) 或更低),所以我收到
ax.set_yscale('log')的错误 -
Tobias 你的 log 值是负数,但你原来的
abunds值不应该是负数。你确定你完全按照@Evert 的建议去做了吗?
标签: python matplotlib plot boxplot logarithm