Python 中 for 循环中每个子图的单独标题
Seperate title for each subplot in a for loop in Python
我正在尝试在 for 循环中使用子图,我可以绘制我的所有图表,但我不能给它们单独的 x 和 y 标签和标题。只是最后一个应用了。
import numpy as np
import astropy
import matplotlib.pyplot as plt
import pandas as pd
#Import 18 filesnames with similar names
from glob import glob
filenames = glob('./*V.asc')
df = [np.genfromtxt(f) for f in filenames]
A = np.stack(df, axis=0)
#Begin subplot
nrows = 3
ncols = 6
fig, ax = plt.subplots(nrows = nrows, ncols = ncols, figsize=(30,15))
#Loop over each filename i, row j and column k
i = 0
for j in range(0, nrows):
for k in range(0, ncols):
ax[j,k].plot(A[i,:,0], A[i,:,1])
plt.title(filenames[i], fontsize = '25')
i += 1
plt.subplots_adjust(wspace=.5, hspace=.5)
fig.show()
我可以在单独的图中绘制它,所以总共 18 个并且效果很好
for i in range(0, len(A)):
plt.figure(i)
plt.title(filenames[i], fontsize = '30')
plt.plot(A[i,:,0], A[i,:,1])
plt.xlabel('Wavelength [Å]', fontsize = 20)
plt.ylabel('Flux Density [erg/s/cm^2/Å]', fontsize = 20)
plt.xticks(fontsize = 20)
plt.yticks(fontsize = 20)
我每次迭代 i 更新标题,与子图相同,所以我不明白为什么它不起作用。
感谢任何输入!
plt.title()
作用于当前轴,通常是最后创建的轴,而不是你想的轴。
一般来说,如果你有多个轴,你最好使用 matplotlib 的面向对象接口而不是 pyplot 接口。参见 usage guide
替换:
plt.title(filenames[i], fontsize = '25')
来自
ax[j,k].set_title(filenames[i], fontsize = '25')
我正在尝试在 for 循环中使用子图,我可以绘制我的所有图表,但我不能给它们单独的 x 和 y 标签和标题。只是最后一个应用了。
import numpy as np
import astropy
import matplotlib.pyplot as plt
import pandas as pd
#Import 18 filesnames with similar names
from glob import glob
filenames = glob('./*V.asc')
df = [np.genfromtxt(f) for f in filenames]
A = np.stack(df, axis=0)
#Begin subplot
nrows = 3
ncols = 6
fig, ax = plt.subplots(nrows = nrows, ncols = ncols, figsize=(30,15))
#Loop over each filename i, row j and column k
i = 0
for j in range(0, nrows):
for k in range(0, ncols):
ax[j,k].plot(A[i,:,0], A[i,:,1])
plt.title(filenames[i], fontsize = '25')
i += 1
plt.subplots_adjust(wspace=.5, hspace=.5)
fig.show()
我可以在单独的图中绘制它,所以总共 18 个并且效果很好
for i in range(0, len(A)):
plt.figure(i)
plt.title(filenames[i], fontsize = '30')
plt.plot(A[i,:,0], A[i,:,1])
plt.xlabel('Wavelength [Å]', fontsize = 20)
plt.ylabel('Flux Density [erg/s/cm^2/Å]', fontsize = 20)
plt.xticks(fontsize = 20)
plt.yticks(fontsize = 20)
我每次迭代 i 更新标题,与子图相同,所以我不明白为什么它不起作用。 感谢任何输入!
plt.title()
作用于当前轴,通常是最后创建的轴,而不是你想的轴。
一般来说,如果你有多个轴,你最好使用 matplotlib 的面向对象接口而不是 pyplot 接口。参见 usage guide
替换:
plt.title(filenames[i], fontsize = '25')
来自
ax[j,k].set_title(filenames[i], fontsize = '25')