我正在绘制我的数据(x,y),并希望以对数标度显示x轴。由于x中存在一些负值,因此无法计算所有值的log 10。这会导致nans在绘图时被简单地忽略(这就是我想要的)但是y轴限制不会为这些缺失值更新。
范例:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-10, 11, 1)
plt.plot(x,x, marker='d')
当我在x轴上加上对数标度时,负值被忽略,但y轴没有更新
x = np.arange(-10, 11, 1)
plt.plot(x,x, marker='d')
plt.xscale('log')
当然,我可以手动设置ylim
,但如果我不知道头部的确切值,那就不理想了。我很困惑matplotlib不会自动更新这个。ax.relim()
和ax.autoscale_view()
没有帮助。任何想法/意见?
2条答案
按热度按时间fiei3ece1#
在快速浏览文档后,我建议您尝试
set_ylim(bottom=0.0)
或set_ybound(lower=0.0)
或ylim(bottom=0.0)
。事实上,我只添加了一行代码就可以使用你的示例:
8nuwlpux2#
我想出了如何以一种通用的方式解决这个问题:如果xscale被设置为“log”,并且x中有负值,则取x < 0的最小值的位置,并将该位置的y值设置为新的限值(理想情况下,与图中其余部分相同的边距):
正如我所说的,我很惊讶matplotlib没有自动完成这一点,所以我提交了this GitHub Issue for matplotlib。让我们看看他们是怎么想的,怎么说的...