Matplotlib का उपयोग करके, मैं "कई प्रदर्शित करना चाहता हूंएक ग्रिड पर सबप्लोट्स जिसमें प्रति पंक्ति एक अलग संख्या में कॉलम होते हैं, जहां प्रत्येक उपप्लॉट का आकार लगभग एक जैसा होता है, और सबप्लॉट को इस तरह व्यवस्थित किया जाता है कि वे कम या ज्यादा केंद्रित हों, जैसे:
यह ग्रिड बनाने के लिए एक बहुत ही सरल बात है जिसमें 2, 3, 2 पैटर्न है gridspec
, लेकिन समस्या यह है कि gridspec
, अनजाने में, उन्हें एक ग्रिड में संरेखित करें, इसलिए उन में 2 भूखंडों के साथ पंक्तियों में भूखंड व्यापक हैं:
यहाँ कोड है कि उत्पन्न करने के लिए:
from matplotlib import gridspec
from matplotlib import pyplot as plt
fig = plt.figure()
arrangement = (2, 3, 2)
nrows = len(arrangement)
gs = gridspec.GridSpec(nrows, 1)
ax_specs = []
for r, ncols in enumerate(arrangement):
gs_row = gridspec.GridSpecFromSubplotSpec(1, ncols, subplot_spec=gs[r])
for col in range(ncols):
ax = plt.Subplot(fig, gs_row[col])
fig.add_subplot(ax)
for i, ax in enumerate(fig.axes):
ax.text(0.5, 0.5, "Axis: {}".format(i), fontweight="bold",
va="center", ha="center")
ax.tick_params(axis="both", bottom="off", top="off", left="off",
right="off", labelbottom="off", labelleft="off")
plt.tight_layout()
मुझे पता है कि मैं सबप्लॉट्स का एक समूह स्थापित कर सकता हूं औरइसकी ज्यामिति पर काम करके उनकी व्यवस्था को सुव्यवस्थित करें, लेकिन मुझे लगता है कि यह थोड़ा जटिल हो सकता है, इसलिए मैं उम्मीद कर रहा था कि एक सरल तरीका उपलब्ध हो सकता है।
मुझे ध्यान देना चाहिए कि भले ही मैं अपने उदाहरण के रूप में (2, 3, 2) व्यवस्था का उपयोग कर रहा हूं, लेकिन मैं मनमाने ढंग से संग्रह के लिए ऐसा करना पसंद करता हूं, न कि केवल एक।
उत्तर:
जवाब के लिए 3 № 1विचार आम तौर पर खोजने के लिए हैसबप्लॉट्स के बीच भाजक, यानी सबसे बड़ा सबप्लॉट जो वांछित ग्रिड से बना हो सकता है, और सभी सबप्लॉट को उनमें से कई पर फैला सकता है जैसे कि वांछित लेआउट प्राप्त होता है।
यहाँ आपके पास 3 पंक्तियाँ और 6 कॉलम हैं और प्रत्येकसबप्लॉट 1 पंक्ति और दो कॉलमों को फैलाता है, बस यह है कि पहली पंक्ति में सबप्लॉट्स 1/2 और 3/4 स्थान पर होते हैं, जबकि दूसरी पंक्ति में वे 0/1, 2/3, 4/5 स्थान पर होते हैं।
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
gs = gridspec.GridSpec(3, 6)
ax1a = plt.subplot(gs[0, 1:3])
ax1b = plt.subplot(gs[0, 3:5])
ax2a = plt.subplot(gs[1, :2])
ax2b = plt.subplot(gs[1, 2:4])
ax2c = plt.subplot(gs[1, 4:])
ax3a = plt.subplot(gs[2, 1:3])
ax3b = plt.subplot(gs[2, 3:5])
for i, ax in enumerate(plt.gcf().axes):
ax.text(0.5, 0.5, "Axis: {}".format(i), fontweight="bold",
va="center", ha="center")
ax.tick_params(axis="both", bottom="off", top="off", left="off",
right="off", labelbottom="off", labelleft="off")
plt.tight_layout()
plt.show()