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

时间:2018-08-13 17:19:42

标签: python python-3.x numpy matplotlib plot

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

const removeItem = (title, body) => {
  let myArray = [
    {title : 'title 1', body: 'body of title one'},
    {title : 'title 2', body: 'body of title two'},
    {title : 'title 3', body: 'body of title three'}
  ]
  
  let filteredArray = myArray.filter((item) =>
    item.title != title 
    && item.body != body
  );
  return filteredArray  
}

 console.log(removeItem( // should only return title 3
  "title 1",
  "body of title two"
 ));

 console.log(removeItem( //should return title 2 and title 3
  "title 1",
  "body of title one"
 ));

问题:

  1. Y轴仍显示科学计数法的格式。如何更改?

  2. 如何对y轴进行特定刻度?我尝试了 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() ,但没有用。

  3. 如何摆脱x和y轴刻度的小数点?

    enter image description here

2 个答案:

答案 0 :(得分:2)

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这样的标签的小数点是没有意义的。因此,人们可能会选择一种{strong> g 通用数字格式StrMethodFormatter的{​​{1}}。

g

答案 1 :(得分:1)

  1. 使用plt.ticklabel_format(style='plain')摆脱科学计数法。

  2. 看起来plt.yticks([1,10])发挥了作用。 yticks()仅添加您提供的特定数字,而不添加范围。因此,它添加的刻度位于y = 1和y = 10,它们恰好在图形的底部和顶部。如果您希望在这些刻度之间有更多的刻度,可以尝试plt.yticks(np.arange(1,10, step=d)),其中“ d”是您希望每一步之间的距离。

  3. 尝试使用plt.gca().xaxis.set_major_formatter(mpl.ticker.EngFormatter(places=0))除去小数点。

所有这些都可以在matplotlib文档中找到,尽管坦率地说它需要一些挖掘工作。