繁体   English   中英

在对数刻度上绘制负值

[英]Plot negative values on a log scale

我正在做一些分析来计算log_10(x)的值,它是一个负数。 但是,我现在正在尝试绘制这些值,因为答案的范围非常大,我想为此使用对数刻度。 如果我只是使用plt.yscale('log')我会收到一条消息,告诉我UserWarning: Data has no positive values, and therefore cannot be log-scaled. 我也无法将x的值提供给plt.plot ,因为log_10(x)的结果是如此之大且为负,以至于x**(log_10(x))的答案只是0

绘制这些数据最直接的方法可能是什么?

您可以使用

plt.yscale('symlog')

将比例设置为对称对数比例。 这意味着它将以对数方式缩放到 0 的两侧。仅使用符号对数比例的负部分就可以正常工作。

ImportanceOfBeingErnest 解决方案的两种替代方案:

  1. 在半对数 y 轴上绘制-log_10(x)并设置 y 标签以显示负单位
  2. 在线性刻度上绘制-log_10(-log_10(x))

但是,在所有情况下(包括 ImportanceOfBeingErnest 提出的解决方案),解释并不简单,因为您正在显示或计算日志的日志。

最后,为了返回 x 的值,您需要计算10**(log_10(x))而不是x**(log_10(x))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM