【发布时间】:2012-02-11 20:08:02
【问题描述】:
我想用 matplotlib 制作一个方轴散点图。通常使用set_scale("log") 效果很好,但它限制我使用log10。我想在 log2 中制作情节。我在这里看到了解决方案:How to produce an exponentially scaled axis?
但是如果你的数组中有 0 个值,它就非常复杂并且不起作用,我就是这样做的。我想像其他 numpy 函数一样忽略那些。
例如:
log2scatter(data1, data2)
其中 data1 和 data2 包含 0 在 x 和 y 轴上应具有对数刻度,并带有对数间隔刻度。和log10一样,除了log2...
谢谢。
【问题讨论】:
-
日志只为正参数定义。这与基数无关,即它适用于自然对数、对数基数 10、对数基数 2 等。因此,除非你对这些零值做一些事情,否则你不能绘制在对数刻度中为零的东西。
-
使用该问题的答案,但首先过滤掉 0 的 y 值及其对应的 x 值(这就是 numpy 无论如何都会忽略它们的方式)。
-
在 numpy 中有什么优雅的方式来做到这一点?过滤使代码复杂化,因为现在我必须有一个未过滤的数组副本,以及一个过滤后的副本......
标签: python numpy scipy matplotlib