Python Matplotlib。在'中绘图;对于循环';同轴线
我有一个相当简单的问题,但有件事让我困惑了2天。 我需要绘制2+个文件。每个文件需要在总共25个绘图上打印,但必须在同一组轴上打印。(即,如果有2个文件,我需要25个绘图,每个绘图上有2行) 我有这个sudo代码,它生成50个绘图(每一行一个)…这是错误的Python Matplotlib。在'中绘图;对于循环';同轴线,python,matplotlib,Python,Matplotlib,我有一个相当简单的问题,但有件事让我困惑了2天。 我需要绘制2+个文件。每个文件需要在总共25个绘图上打印,但必须在同一组轴上打印。(即,如果有2个文件,我需要25个绘图,每个绘图上有2行) 我有这个sudo代码,它生成50个绘图(每一行一个)…这是错误的 with open(bamlist, 'r') as bamlist: for bam in bamlist: #Opens the 2 files 'Generate data Here' d
with open(bamlist, 'r') as bamlist:
for bam in bamlist: #Opens the 2 files
'Generate data Here'
dataframe = []
for line in data:
line = line.split("\t")
dataframe.append(line[0:4:1])
df = pd.DataFrame(dataframe, columns=['Chromosome', 'Position', 'N', 'BaseCount'])
grouped_df = df.groupby('Chromosome') #groups dataframe into the required 25plots
for df in grouped_df:
density_data = 'Get density data from df'
f, ax = plt.subplots()
sns.kdeplot(density_data, ax=ax, linewidth=1)
pp.savefig()
pp.close()
有没有办法在第二次输入for循环时恢复到轴的初始设置,这样我就可以在25个图中得到每个图2条线(而不是50个图)?您的问题源于您使用了:
f, ax = plt.subplots()
这意味着您每次点击该行(在您的情况下,50次)时都会生成一个新的子批次。您需要生成25个子地块,稍后再引用它们。您可以执行以下操作:
axes = []
for i in range(25):
f,ax = plt.subplots()
axes.append(ax)
然后在循环中:
for df_index in range(len(grouped_df)):
df = grouped_df[df_index]
density_data = 'Get density data from df'
sns.kdeplot(density_data, ax=axes[df_index], linewidth=1)
您还可以检查轴是否不存在(如果它扩展到超过25个子批次或其他),如果不存在,则创建它。使用plt.figure()也可以完成作业
iterate = -1
for df in grouped_df:
iterate += 1
plt.figure(iterate)
density_data = 'Get density data from df'
sns.kdeplot(density_data, linewidth=1)
pp.savefig()
pp.close()
你想要一个图形上有25个子图,还是25个单独的图形?两者都可以。单独的数字将更容易查看。谢谢!帮了很多忙!我还将它用于plot.figure()谢谢您的回复。我很高兴它起到了作用,我也很高兴您能够使用figure()而不是subplot()来生成新绘图中的数据(在我写回复之前,评论中没有阐明这一点)。如果这个答案是你喜欢的,并且你觉得它可以帮助其他人寻找同样的东西,请“接受”这个答案。谢谢:)