使用可运行代码是其中之一
学习 Python 的最快方法。
让我们从code from the matplotlib example gallery开始。
鉴于代码中的 cmets,代码似乎分为 4 个主要节。
第一节生成一些数据,第二节生成主情节,
第三和第四节创建插入轴。
我们知道如何生成数据并绘制主图,所以让我们关注第三节:
a = axes([.65, .6, .2, .2], axisbg='y')
n, bins, patches = hist(s, 400, normed=1)
title('Probability')
setp(a, xticks=[], yticks=[])
将示例代码复制到一个名为test.py 的新文件中。
如果我们将.65 更改为.3 会发生什么?
a = axes([.35, .6, .2, .2], axisbg='y')
运行脚本:
python test.py
您会发现“概率”插图移到了左侧。
所以axes 函数控制插入的位置。
如果你多玩一些数字,你会发现 (.35, .6) 是
插图左下角的位置,(.2, .2) 是宽度和
插图的高度。数字从 0 到 1,(0,0) 位于
图的左下角。
好的,现在我们正在做饭。在下一行我们有:
n, bins, patches = hist(s, 400, normed=1)
您可能会认出这是matplotlib command for drawing a histogram,但是
如果不是,将数字 400 更改为 10,将产生一个图像
更粗的直方图,所以再次通过玩数字你很快就会弄清楚
这条线与插图中的图像有关。
您需要在此处致电semilogx(data[3:8,1],data[3:8,2])。
线title('Probability')
显然会生成插入上方的文本。
最后我们来到setp(a, xticks=[], yticks=[])。没有数字可玩,
那么如果我们通过在行首添加# 来注释掉整行会发生什么:
# setp(a, xticks=[], yticks=[])
重新运行脚本。哦!现在插入轴上有很多刻度线和刻度线标签。
美好的。所以现在我们知道setp(a, xticks=[], yticks=[]) 会从坐标轴a 中删除刻度线和标签。
现在,理论上您有足够的信息可以将此代码应用于您的问题。
但还有一个潜在的绊脚石:matplotlib 示例使用
from pylab import *
而你使用import matplotlib.pyplot as plt。
The matplotlib FAQ 说import matplotlib.pyplot as plt
是编写脚本时推荐使用 matplotlib 的方法,而
from pylab import * 用于交互式会话。所以你做对了,(虽然我也建议使用import numpy as np而不是from numpy import *)。
那么我们如何将 matplotlib 示例转换为使用 import matplotlib.pyplot as plt 运行?
进行转换需要一些使用 matplotlib 的经验。一般来说,你只需
在 axes 和 setp 等裸名前添加 plt.,但有时
函数来自 numpy,有时调用应该来自轴
对象,而不是来自模块 plt。需要经验才能知道所有这些在哪里
函数来自。谷歌搜索函数的名称和“matplotlib”会有所帮助。
阅读示例代码可以积累经验,但没有捷径可走。
这样,转换后的代码就变成了
ax2 = plt.axes([.65, .6, .2, .2], axisbg='y')
ax2.semilogx(t[3:8],s[3:8])
plt.setp(ax2, xticks=[], yticks=[])
你可以像这样在你的代码中使用它:
from numpy import *
import os
import matplotlib.pyplot as plt
data = loadtxt(os.getcwd()+txtfl[0], skiprows=1)
fig1 = plt.figure()
ax1 = fig1.add_subplot(111)
ax1.semilogx(data[:,1],data[:,2])
ax2 = plt.axes([.65, .6, .2, .2], axisbg='y')
ax2.semilogx(data[3:8,1],data[3:8,2])
plt.setp(ax2, xticks=[], yticks=[])
plt.show()