python - 如何设置 x&y 轴的对数刻度?

标签 python python-3.x numpy matplotlib plot

我想绘制一个没有科学记数法的对数刻度图。

    import matplotlib as mpl
    import matplotlib.pyplot as plt

    plt.plot(np.arange(0,10,0.1))

    plt.xscale('log')
    plt.yscale('log')
    plt.xlim(0.1,100)
    plt.ylim(1,10)

    plt.gca().xaxis.set_major_formatter(mpl.ticker.ScalarFormatter())
    plt.gca().yaxis.set_major_formatter(mpl.ticker.ScalarFormatter())
    plt.show()

问题:

  1. Y轴依然是科学记数法。怎么改?

  2. 如何为 y 轴制作特定的刻度?我尝试了 plt.yticks([1,10]),但它不起作用。

  3. 如何去除 x 轴和 y 轴刻度的小数点?

    enter image description here

最佳答案

<强>1。摆脱科学记数法。

刻度是主要刻度和次要刻度,因此您还需要设置次要格式化程序:

plt.gca().yaxis.set_major_formatter(mpl.ticker.ScalarFormatter())
plt.gca().yaxis.set_minor_formatter(mpl.ticker.ScalarFormatter())

<强>2。在特定的自定义位置显示刻度

摆脱次要的刻度标签允许 yticks 按预期工作。

plt.yticks([1,10])
plt.gca().yaxis.set_minor_formatter(mpl.ticker.NullFormatter())

<强>3。去掉小数点

我想去掉像 0.1 这样的标签的小数点是没有意义的。因此,人们可能会选择具有g通用数字格式gStrMethodFormatter

plt.gca().yaxis.set_major_formatter(mpl.ticker.StrMethodFormatter("{x:g}"))

关于python - 如何设置 x&y 轴的对数刻度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51827536/

相关文章:

python - LightGBM 错误 - 长度与数据不同

python - Python中Enum和IntEnum之间的区别

python - 使用 numpy 语法共轭 self 的转置

python - Matplotlib 使用一组特定数据点绘制等高线图

python : Treating the key with None value as non-existant

python - 更改列表中的值 - python

python - Django 1.8 - 信号 - @receiver 装饰器和 Signal.connect() 方法有什么区别?

python - 检索支持的读取文件扩展名/格式列表

python - 在 Python 3 中使用 SAX 解析器解析 XML

python - 添加多个约束到 scipy 最小化,自动生成约束字典列表?