我有一个相当简单的问题,但有些事情让我难以忍受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'
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()
Run Code Online (Sandbox Code Playgroud)
有没有办法在第二次输入for循环时恢复到初始轴的设置,这样我每个绘图就会得到2行25个点(而不是50个)?
您的问题源于您使用:
f, ax = plt.subplots()
Run Code Online (Sandbox Code Playgroud)
这意味着每次点击该行时都会生成一个新的子图(在您的情况下为50次).您需要生成25个子图并稍后引用它们.你可以这样做:
axes = []
for i in range(25):
f,ax = plt.subplots()
axes.append(ax)
Run Code Online (Sandbox Code Playgroud)
然后在你的循环中:
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)
Run Code Online (Sandbox Code Playgroud)
您还可以检查轴是否不存在(如果它扩展到超过25个子图或其他),如果不存在,则创建它.
| 归档时间: |
|
| 查看次数: |
2237 次 |
| 最近记录: |