是否可以为图形制作不同大小的刻度?

时间:2011-06-29 06:56:39

标签: python graph matplotlib axis

假设我有一个图表,一个有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应变图,其中是恒定空间的刻度......

询问更多是否需要更多信息,我很困惑,我不知道哪些信息是必要的。

...我在下面的评论和文档中理解,contourf()对应plot()。那么set_major_locator应该有用吗?虽然我记得我尝试了一次,但结果并不顺利......不过我可以在那个剧本的副本中再试一次。

1 个答案:

答案 0 :(得分:2)

您在寻找主要和次要的蜱虫吗?我假设您正在寻找以下示例:

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()

如果这不是您所需要的,您能否将您的示例代码更改为运行的代码,并且可能会发布您需要的草图?