【问题标题】:Python plot log scale set xticks?Python plot log scale set xticks?
【发布时间】:2013-06-09 19:02:47
【问题描述】:

我正在尝试在对数刻度之间进行绘图,但存在问题;

from pylab import *
import matplotlib.pyplot  as pyplot

Ds = pow(10,5)
D = np.linspace(0, pow(10,6), 6)
alpha=1.44
beta=0.44
A=alpha*pow((D/Ds), beta)
L=1.65
a=exp(-(A*L/4.343))
fig = pyplot.figure()
ax = fig.add_subplot(1,1,1)
ax.set_xscale('log')
xlim(0.001,1)
ylim(0.1,1)
ax.grid()
line, = ax.plot(D/(Ds),a, color='blue', lw=2, marker='o')
show()

但我无法设置 x 轴的值标签和刻度。我希望 y 轴显示在 0 到 1 之间,增量为 0.1; x 轴以对数刻度显示 0 到 10,例如 0.001 0.002 0.003 0.004 0.005....0.01 0.02 0.03 ... 等等,但我做不到?

set_xscale 自动化刻度和值标签。有什么想法吗?

【问题讨论】:

标签: python numpy matplotlib


【解决方案1】:

是的,你可以这样做:

import numpy as np
xticks = [0.001, 0.002, 0.003, 0.004, 0.005, 0.01, 0.02, 0.03, 0.04, 0.05,
          0.1, 0.2, 0.3, 0.4, 0.5, 1., 2., 3., 4., 5., 10.]
yticks = np.arange(0,1,0.1)
ax.xaxis.set_ticks( xticks )
ax.yaxis.set_ticks( yticks )

要在所有给定位置强制标签,您可以使用set_ticklabels() 方法,您还可以在其中控制字符串格式:

ax.xaxis.set_ticklabels( ['%1.e'  % i for i in xticks] )
ax.yaxis.set_ticklabels( ['%1.1f' % i for i in yticks] )

【讨论】:

  • ax.xaxis.set_ticks( [0.001, 0.002 ... ] ) ^ SyntaxError: invalid syntax
  • 是的,但它只在 x 轴上显示 2 个值标签,而不是其他的?
  • 好的...我已经更新了答案,包括 set_ticklabels 来解决这个问题
  • 您可以检查刻度是否存在调用ax.xaxis.get_ticklabels(),如果是,请尝试将xlim(0.001,1) 调整为比0.001 略小的值,
猜你喜欢
  • 2015-04-03
  • 2019-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-09
  • 2017-06-10
  • 1970-01-01
相关资源
最近更新 更多