我正在尝试构建一个图表,其中我有固定的行数但每行的列数不同。我用于绘图的代码相当于:
import matplotlib.pyplot as pl
pl.figure()
pl.ion()
pl.subplot(2,1,1)
pl.title("Sets the title for top plot")
plotData(data[0]) # Function that plots data in this first row
for i in range(3):
pl.subplot(2,3,4+i)
pl.title("Sets the title of each subplot in second row")
plotData(data[i+1]) # Plots the data in second row
现在由于某种原因,在第二行的子图中绘制的数据消失了。当我调试它时,它似乎就在那里,直到从for循环中的plotData()函数返回(或者可能在调用时) 下一个subplot命令 - 但这并没有解释为什么最后一个子图是空的......)。
plotData()
函数末尾的代码触发了问题:
pl.gca().set_xlim(0,15)
pl.gca().set_ylim(0,15)
这是否意味着在绘制数据后我无法设置x,y限制,或者我在这里做错了什么?
可以找到显示问题的最小示例的pastebin here
答案 0 :(得分:1)
plotData()
:
for i,dset in enumerate(data):
x = np.array([point['x'] for point in dset])
y = np.array([-point['y'] for point in dset])
我对set_xlim
和set_ylim
的调用完全符合他们的预期,只是在我设置的限制下,数据在这些图中不再可见(因为我切换了数据上的y轴,但没有限制)。
答案 1 :(得分:0)
我同意@Zhenya - 我没有看到这个功能与最新的matplotlib(开发版本1.3-dev并且怀疑它至少在v1.2.0中修复,但可能甚至早在v1.0.1)。
HTH,
更新:添加了mpl v1.2.0的输出:
> python
Python 2.7.2
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib
>>> print matplotlib.__version__
1.2.0
>>>
>>> import matplotlib.pyplot as plt
>>>
>>> plt.ion()
>>>
>>> plt.subplot(2,1,1)
<matplotlib.axes.AxesSubplot object at 0x283d790>
>>> plt.title("Sets the title for top pltot")
<matplotlib.text.Text object at 0x2851f50>
>>>
>>> plt.plot(range(10, 0, -1))
[<matplotlib.lines.Line2D object at 0x2c40790>]
>>>
>>> for i in range(3):
... plt.subplot(2,3,4+i)
... plt.title("Sets the title of each subplot in second row")
... plt.plot(range(10))
...
<matplotlib.axes.AxesSubplot object at 0x2c40e90>
<matplotlib.text.Text object at 0x2c64a90>
[<matplotlib.lines.Line2D object at 0x2c6e990>]
<matplotlib.axes.AxesSubplot object at 0x2c6ec10>
<matplotlib.text.Text object at 0x2e6c810>
[<matplotlib.lines.Line2D object at 0x2e78110>]
<matplotlib.axes.AxesSubplot object at 0x2e78390>
<matplotlib.text.Text object at 0x2e8ced0>
[<matplotlib.lines.Line2D object at 0x2e98610>]