FS.*_*FS. 81 python matplotlib
我编写的代码可以同时打开16个数字.目前它们都作为单独的图形打开.我希望他们在同一页面上打开所有内容.不一样的图表.我想在一个页面/窗口上有16个单独的图形.由于某种原因,numbins和defaultreallimits的格式不能超过图1.我是否需要使用subplot命令?我不明白为什么我必须但不知道我还会做什么?
import csv
import scipy.stats
import numpy
import matplotlib.pyplot as plt
for i in range(16):
plt.figure(i)
filename= easygui.fileopenbox(msg='Pdf distance 90m contour', title='select file', filetypes=['*.csv'], default='X:\\herring_schools\\')
alt_file=open(filename)
a=[]
for row in csv.DictReader(alt_file):
a.append(row['Dist_90m(nmi)'])
y= numpy.array(a, float)
relpdf=scipy.stats.relfreq(y, numbins=7, defaultreallimits=(-10,60))
bins = numpy.arange(-10,60,10)
print numpy.sum(relpdf[0])
print bins
patches=plt.bar(bins,relpdf[0], width=10, facecolor='black')
titlename= easygui.enterbox(msg='write graph title', title='', default='', strip=True, image=None, root=None)
plt.title(titlename)
plt.ylabel('Probability Density Function')
plt.xlabel('Distance from 90m Contour Line(nm)')
plt.ylim([0,1])
plt.show()
Run Code Online (Sandbox Code Playgroud)
dou*_*oug 189
las3rjock的答案,不知何故是OP接受的答案,是不正确的 - 代码不运行,也不是matplotlib语法有效; 该答案不提供可运行的代码,并且缺少OP可能在编写自己的代码以解决OP中的问题时发现有用的任何信息或建议.
鉴于这是已经接受的答案并且已经收到了几个上升票,我想有点解构.
首先,调用插曲并没有给你多条曲线; 调用子图来创建单个图,以及创建多个图.另外,"改变plt.figure(i)"是不正确的.
plt.figure()(其中plt或PLT通常是matplotlib的pyplot库导入并反弹为全局变量,plt或有时是PLT,如下所示:
from matplotlib import pyplot as PLT
fig = PLT.figure()
Run Code Online (Sandbox Code Playgroud)
上面的一行创建了一个matplotlib图形实例; 然后为每个绘图窗口调用此对象的add_subplot方法(非正式地考虑包含单个子图的x和y轴).您可以创建(无论是页面中的一个还是多个),就像这样
fig.add_subplot(111)
Run Code Online (Sandbox Code Playgroud)
这个语法相当于
fig.add_subplot(1,1,1)
Run Code Online (Sandbox Code Playgroud)
选择一个对你有意义的.
下面我列出了在页面上绘制两个图的代码,一个在另一个上面.格式化是通过传递给add_subplot的参数完成的.注意第一个图的参数是(211),第二个图的参数是(212).
from matplotlib import pyplot as PLT
fig = PLT.figure()
ax1 = fig.add_subplot(211)
ax1.plot([(1, 2), (3, 4)], [(4, 3), (2, 3)])
ax2 = fig.add_subplot(212)
ax2.plot([(7, 2), (5, 3)], [(1, 6), (9, 5)])
PLT.show()
Run Code Online (Sandbox Code Playgroud)
这两个参数中的每一个都是一个完整的规范,用于在页面上正确放置相应的绘图窗口.
211(同样,也可以用三元组形式写成,(2,1,1)表示两行和一列绘图窗口;第三个数字指定该特定子图窗口相对于其他子图窗口的顺序 - - 在这种情况下,这是第一个图(将其放在第1行),因此图编号1,第1行第1列.
传递给add_subplot的第二次调用的参数与第一次调用的不同之处仅在于尾随数字(2而不是1,因为这个图是第二个图(第2行,第1列).
更多绘图的示例:如果您想在页面上使用四个绘图,在2x2矩阵配置中,您将调用add_subplot方法四次,传入这四个参数(221),(222),(223)和( 224),分别在10,2,8和4点的页面上按顺序创建四个图.
请注意,四个参数中的每一个都包含两个引导2 - 它编码2 x 2配置,即两行和两列.
四个参数中每个参数中的第三个(最右边)数字编码2 x 2矩阵中特定绘图窗口的顺序 - 即第1行第1列(1),第1行第2列(2),第2行第1栏(3),第2栏第2栏(4).
Sau*_*tro 78
由于这个问题来自4年前新的事情已经实施,其中有一个非常方便的新功能plt.subplots
:
fig, axes = plot.subplots(nrows=2, ncols=3, sharex=True, sharey=True)
Run Code Online (Sandbox Code Playgroud)
其中axes
是numpy.ndarray
AxesSubplot对象的一个,使得使用数组索引遍历不同的子图非常方便[i,j]
.
FS.*_*FS. 10
这也有效:
for i in range(19):
plt.subplot(5,4,i+1)
Run Code Online (Sandbox Code Playgroud)
它在一页上绘制了19个总图.格式是5向下和4跨...