假设我有一个有25个刻度的图表,我想让每五个刻度(0,5,10,15,20,25)比其他刻度大一次,以便更容易阅读图表。(这些刻度上已经有数字标签,其他刻度上没有标签,但阅读仍然相当不舒服……)这有可能吗?如果我有27个刻度而不是25个刻度呢?
E:更多信息:
实际上,我正在编辑一个由更有经验的程序员(而我并不是很有经验)编写的没有太多注释的脚本。程序根据给定的数据绘制一张彩色地图(在坐标点(x,y)上表示应变)。呃,我必须承认我不理解代码里说的所有内容。但是,有一部分是用所要求的应变场绘制的。
# Strain field on background
fig = mpl.figure(1,figsize=(6,5),facecolor='w',edgecolor='k')
mpl.clf()
ax1 = fig.add_axes([0.5*(1-0.50*ratio)+0.05, 0.45, 0.50*ratio, 0.50])
mpl.contourf(strainY.T * 100,50) # Into percents
mpl.xlim(0,x-1)
mpl.ylim(0,y-1)
mpl.gca().invert_yaxis()
yt = np.linspace(0,y-1,len(vHeight)+1)
locs, labels = mpl.yticks(yt, vHeight, fontsize=9)
xt = np.linspace(0,x-1,len(vWidth)+1)
locs, labels = mpl.xticks(xt, vWidth, fontsize=9)yt和xt表示用于放置记号的特殊矢量。由于一些恼人的缩放问题(从像素(?)到其他测量)和不同长度的轴,他们需要一些工作...无论如何,结果是一个2D应变图,其中是带有恒定空格的刻度...
如果你需要更多的信息,我很困惑,我不知道什么信息是必要的。
我已经理解了下面的注释和文档,...what ()对应于plot()。那么set_major_locator应该可以工作吗?虽然我记得我试过一次,但结果不是很好...不过,我可以在该脚本的副本中再试一次。
发布于 2011-06-29 15:53:23
您是否在寻找主要标记和次要标记?我假设您正在寻找以下示例:
http://matplotlib.sourceforge.net/examples/pylab_examples/major_minor_demo1.html#pylab-examples-major-minor-demo1
编辑我已经修改了你的例子,这样它就可以运行了。下一次,请发布一个其他人可以复制/粘贴/执行的最小示例。
从上面引用的网站上,我复制了轴的格式。如果我理解正确的话,您希望在任意位置设置刻度线。为此,我们可以使用带有列表的FixedLocator。如果刻度之间的间隔恒定,则使用MultipleLocator。在matplotlib.ticker里还有很多其他的定位器...
你应该能够运行下面的代码,希望能得到你想要的东西!:-)
import matplotlib.pyplot as mpl
import numpy as np
from matplotlib.ticker import MultipleLocator, FormatStrFormatter, FixedLocator
majorLocator = FixedLocator([0,15,19,40,60,99])
majorFormatter = FormatStrFormatter('%d')
minorLocator = MultipleLocator(5)
ratio = 1
strainY = np.zeros((100,100))
x = 100
y = 100
vHeight = np.arange(0,100,5)
vWidth = np.arange(0,100,5)
# Strain field on background
fig = mpl.figure(1,figsize=(6,5),facecolor='w',edgecolor='k')
mpl.clf()
ax1 = fig.add_axes([0.5*(1-0.50*ratio)+0.05, 0.45, 0.50*ratio, 0.50])
mpl.contourf(strainY.T * 100,50) # Into percents
mpl.xlim(0,x-1)
mpl.ylim(0,y-1)
mpl.gca().invert_yaxis()
yt = np.linspace(0,y-1,len(vHeight)+1)
locs, labels = mpl.yticks(yt, vHeight, fontsize=9)
xt = np.linspace(0,x-1,len(vWidth)+1)
locs, labels = mpl.xticks(xt, vWidth, fontsize=9)
ax1.xaxis.set_major_locator(majorLocator)
ax1.xaxis.set_major_formatter(majorFormatter)
ax1.xaxis.set_minor_locator(minorLocator)
mpl.show()如果这不是你所需要的,你能不能把你的示例代码改成可以运行的代码,也许还能给出你所需要的东西的草图?
https://stackoverflow.com/questions/6516822
复制相似问题