使用GridSpec,我有一个规则的图形点阵.假设3 x 3.所有绘图轴都关闭,因为我对绘图的形状感兴趣,而不是单个轴值.
我想做的是标记较大框的x和y轴.例如,在上面的3×3情况下,x轴可以是['A','B','C'],y轴可以是[1,2,3].
是否可以获得此标签?如何访问网格规格轴?
除非我缺少一个明显的方法名称,否则在GridSpec文档中并不多.
代码示例.数据在pandas数据框中 - 忽略使用嵌套循环的暴力提取...
fig = plt.figure(figsize=(12,12))
gs = gridspec.GridSpec(40, 19, wspace=0.0, hspace=0.0)
for j in nseasons:
t = tt[j]
nlats = t.columns.levels[0]
for idx, k in enumerate(nlats):
diurnal = t[k].iloc[0]
ax = plt.subplot(gs[j, idx])
ax.plot(y, diurnal.values, 'b-')
ax.set_xticks([])
ax.set_yticks([])
fig.add_subplot(ax)
sys.stdout.write("Processed plot {}/{}\r".format(cplots, nplots))
sys.stdout.flush()
cplots += 1
#Here the figures axis labels need to be set.
Run Code Online (Sandbox Code Playgroud)
正如评论中所提到的,您可以通过仅标记图左侧和底部的轴来使用xlabel和ylabel执行此操作.以下示例.
from matplotlib import pyplot as plt
import matplotlib.gridspec as gridspec
fig = plt.figure(figsize=(12,12))
rows = 40
cols = 19
gs = gridspec.GridSpec(rows, cols, wspace=0.0, hspace=0.0)
for i in range(rows):
for j in range(cols):
ax = plt.subplot(gs[i, j])
ax.set_xticks([])
ax.set_yticks([])
# label y
if ax.is_first_col():
ax.set_ylabel(i, fontsize = 9)
# label x
if ax.is_last_row():
ax.set_xlabel(j, fontsize = 9)
plt.show()
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
1452 次 |
| 最近记录: |