我试图imshow
使用以下代码更改x轴上的刻度值:
import matplotlib.pyplot as plt
import numpy as np
def scale_xaxis(number):
return(number+1001)
data = np.array([range(10),range(10,20)])
fig = plt.figure(figsize=(3,5))
ax = fig.add_subplot(111)
ax.imshow(data,aspect='auto')
ax.autoscale(False)
xticks = ax.get_xticks()
ax.xaxis.set_ticklabels(scale_xaxis(xticks))
plt.savefig("test.png")
Run Code Online (Sandbox Code Playgroud)
得到的图像http://ubuntuone.com/2Y5ujtlEkEnrlTcVUxvWLU
然而,x-ticks重叠并具有"非圆形"值.matplotlib有什么方法可以自动执行此操作吗?通过使用set_ticklabels
或其他方式?
另外看看使用extent
(doc)让我们matplotlib
考虑如何放入tick标签并添加任意一个班次:
data = np.array([range(10),range(10,20)])
fig = plt.figure(figsize=(3,5))
ax = fig.add_subplot(111)
ax.imshow(data,aspect='auto',extent=[10000,10010,0,1])
Run Code Online (Sandbox Code Playgroud)
如果你一定要做到这我的手,你可能会更好设置formatter
并locator
的axis
得到你想要的东西(文件).
import matplotlib.pyplot as plt
import numpy as np
def scale_xaxis(number):
return(number+1001)
def my_form(x,pos):
return '%d'%scale_xaxis(x)
data = np.array([range(10),range(10,20)])
fig = plt.figure(figsize=(3,5))
ax = fig.add_subplot(111)
ax.imshow(data,aspect='auto')
ax.autoscale(False)
ax.xaxis.set_major_locator(matplotlib.ticker.MultipleLocator(int(2)))
ax.xaxis.set_major_formatter(matplotlib.ticker.FuncFormatter(my_form))
Run Code Online (Sandbox Code Playgroud)
需要设置定位器以确保不会将滴答放在非整数位置,然后由格式化程序强制转换为整数(这会将它们留在错误的位置)
相关问题:
归档时间: |
|
查看次数: |
3739 次 |
最近记录: |