[英]Reshape axes in figure using matplotlib
我正在使用使用 matplotlib 生成圖形的庫中的方法。
我收到一組軸:
[<matplotlib.axes._axes.Axes at 0x117a32a90>,
<matplotlib.axes._axes.Axes at 0x117bb1d68>,
<matplotlib.axes._axes.Axes at 0x10bae8390>,
<matplotlib.axes._axes.Axes at 0x10bb0add8>,
<matplotlib.axes._axes.Axes at 0x10c153898>,
<matplotlib.axes._axes.Axes at 0x1159412e8>,
<matplotlib.axes._axes.Axes at 0x115964d30>]
在原始圖中,所有軸都在同一行中(請參見第一個圖並想象右側有額外的兩個軸)。 我想重塑(à la numpy)圖形以創建一個軸網格(參見第二個圖形)。
是否可以?
按照這個答案,我嘗試使用 GridSpec:
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
fig = plt.figure()
axs = #get list of axes
gs = gridspec.GridSpec(3,3)
for i in range(3):
for j in range(3):
k = i+j*3
if k < len(axs):
axs[k].set_position(gs[k].get_position(fig))
fig.add_subplot(gs[k])
但它不起作用,我還沒有完全掌握GridSpec。 該圖顯示了正確數量的子圖,但未添加軸。
我想你快到了。 不知道你的繪圖功能是什么,我只是做了一個虛擬的來說明。
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
def dummy_plots():
"""
Return a 1d array of dummy plots.
"""
_, ax_arr = plt.subplots(1, 9)
for ax in ax_arr.flat:
ax.plot([0, 1], [0, 1])
return ax_arr
axs = dummy_plots()
fig = plt.gcf()
gs = gridspec.GridSpec(3,3)
for i in range(3):
for j in range(3):
k = i+j*3
if k < len(axs):
axs[k].set_position(gs[k].get_position(fig))
plt.show()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.