我有一个相当简单的问题,但有些事情让我难以忍受2天。 我需要绘制2个以上的文件。每个文件需要在总共25个图上绘制,但必须绘制在同一组轴上。 (即如果我需要2个文件,每个图上需要25个图,每行2行)。
我有这个sudo代码生成50个图(每行一行)......这是错误的
<!-- Enable servlets as welcome files -->
<context-param>
<param-name>
org.eclipse.jetty.servlet.Default.welcomeServlets
</param-name>
<param-value>true</param-value>
</context-param>
有没有办法在第二次输入for循环时恢复到初始轴的设置,这样每个绘图就会得到2行25个点(而不是50个)?
答案 0 :(得分:8)
您的问题源于您的使用:
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个子图或其他内容),如果不存在,则创建它。
答案 1 :(得分:2)
使用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()