Matplotlib pyplot:是否可以有指数轴?
Matplotlib pyplot: Is it possible to have exponential axis?
我的 pyplot 图表需要 "the opposite" 个 loglog。
如何实现指数轴?
数据看起来像:
x = [1, 2, 4]
y = [1, 2, 4]
z = [2, 2, 2]
quadranten = plt.figure()
s = [20*4**n for n in z]
fig, ax = plt.subplots()
ax.axis([1, 5, 1, 5])
ax.loglog() <-- opposite function?
xstart, xend = ax.get_xlim()
ax.xaxis.set_ticks(np.arange(xstart, xend, 0.712123))
ax.xaxis.set_major_formatter(ticker.FormatStrFormatter('%0.1f'))
ystart, yend = ax.get_ylim()
ax.yaxis.set_ticks(np.arange(ystart, yend, 0.712123))
ax.yaxis.set_major_formatter(ticker.FormatStrFormatter('%0.1f'))
plt.xlabel('x')
plt.ylabel('y')
plt.scatter(x,y,s=s)
plt.show()
目标是使 x 轴具有均匀大小的步长:0、1、2、4、8、...
y 轴相同,大小均匀的步长按一个因子(例如两个)呈指数增长:0、1、2、4、8,...
这可能吗?
像这样:
loglog
采用控制对数底数的参数 basex
和 basey
:
loglog(arange(1,100), arange(1,100)**2, basex=2, basey=2)
我的 pyplot 图表需要 "the opposite" 个 loglog。 如何实现指数轴?
数据看起来像:
x = [1, 2, 4]
y = [1, 2, 4]
z = [2, 2, 2]
quadranten = plt.figure()
s = [20*4**n for n in z]
fig, ax = plt.subplots()
ax.axis([1, 5, 1, 5])
ax.loglog() <-- opposite function?
xstart, xend = ax.get_xlim()
ax.xaxis.set_ticks(np.arange(xstart, xend, 0.712123))
ax.xaxis.set_major_formatter(ticker.FormatStrFormatter('%0.1f'))
ystart, yend = ax.get_ylim()
ax.yaxis.set_ticks(np.arange(ystart, yend, 0.712123))
ax.yaxis.set_major_formatter(ticker.FormatStrFormatter('%0.1f'))
plt.xlabel('x')
plt.ylabel('y')
plt.scatter(x,y,s=s)
plt.show()
目标是使 x 轴具有均匀大小的步长:0、1、2、4、8、... y 轴相同,大小均匀的步长按一个因子(例如两个)呈指数增长:0、1、2、4、8,...
这可能吗?
像这样:
loglog
采用控制对数底数的参数 basex
和 basey
:
loglog(arange(1,100), arange(1,100)**2, basex=2, basey=2)