मैं 3 x 1 सबप्लॉट के साथ कई आंकड़े प्लॉट करना चाहता हूं लेकिन दूसरा सेट पहले जैसा ही है, मैं क्या गलत कर रहा हूं? (मैं 3 x n सबप्लॉट प्लॉट नहीं करना चाहता)। मैं सबप्लॉट्स के साथ कई आंकड़े कैसे बना सकता हूं क्योंकि मेरे प्रयासों में सबप्लॉट का दूसरा सेट पहले जैसा ही है।

xfield = 'Z_1'
binCount = 20
##################### Z ranges
Zrange = '1 >= Z > 0'
RErange1a = REMassEClassEmeasure[REMassEClassEmeasure[xfield]>0]
RErange1  = RErange1a[RErange1a[xfield]<=1]
###################### Redness

alphaVal = .3

fig1 = plt.figure(figsize=(12, 6), dpi=200)
yfield = 'uminusr'
#fig, ax = plt.subplots(1, 3, figsize=(12,6)) # make the figure with the size 10 x 6 inches
fig1.suptitle('Plot 1 - Histogram Red Galaxies '+Zrange+' for Elliptical Galaxies')
ax1 = fig1.add_subplot(1, 3, 1)
#ax1.title.set_text('Plot 1 - Histogram Red Galaxies '+Zrange+' for Elliptical Galaxies')
ax1.set_ylabel('Galaxy Count')
ax1.set_xlabel(yfield)
counts, bins = np.histogram(RErange1[yfield].data,bins=binCount)
ax1.hist(bins[:-1],bins, weights=counts)
#fig.legend(loc="upper right")
#plt.axis([0, 3, 0, 0.8])
#plt.show()

yfield = 'CountInCyl'
ax2 = fig1.add_subplot(1, 3, 2)
#ax2.title.set_text('Plot 2 - Histogram Count in Cyl '+Zrange+' for Elliptical Galaxies')
ax2.set_ylabel('Galaxy Counts')
ax2.set_xlabel(yfield)
counts, bins = np.histogram(RErange1[yfield].data,bins=binCount)
ax2.hist(bins[:-1], bins, weights=counts)
#fig.legend(loc="upper right")
#plt.axis([0, 3, 0, 0.8])

        
yfield = 'DistanceTo5nn'
ax3 = fig1.add_subplot(1, 3, 3)
#ax3.title.set_text('Plot 2 - Histogram Count in Cyl '+Zrange+' for Elliptical Galaxies')
ax3.set_ylabel('Galaxy Count')
ax3.set_xlabel(yfield)
counts, bins = np.histogram(RErange1[yfield].data,bins=binCount)
ax3.hist(bins[:-1], bins, weights=counts)
#fig.legend(loc="upper right")
#plt.axis([0, 3,        
#plt.show()

##################### Z ranges
Zrange = '1.5 >= Z > 1'
RErange2a = REMassEClassEmeasure[REMassEClassEmeasure[xfield]>4]
RErange2  = RErange1a[RErange1a[xfield]<=5]
print(len(RErange2))
###################### Redness

fig2 = plt.figure(figsize=(12, 6), dpi=200)
yfield = 'uminusr'
#fig, ax = plt.subplots(1, 3, figsize=(12,6)) # make the figure with the size 10 x 6 inches
fig2.suptitle('Plot 2 - Histogram Red Galaxies '+Zrange+' for Elliptical Galaxies')
ax1 = fig2.add_subplot(1, 3, 1)
#ax1.title.set_text('Plot 1 - Histogram Red Galaxies '+Zrange+' for Elliptical Galaxies')
ax1.set_ylabel('Galaxy Count')
ax1.set_xlabel(yfield)
counts, bins = np.histogram(RErange2[yfield].data,bins=binCount)
ax1.hist(bins[:-1],bins, weights=counts)
#fig.legend(loc="upper right")
#plt.axis([0, 3, 0, 0.8])
#plt.show()

yfield = 'CountInCyl'
ax2 = fig2.add_subplot(1, 3, 2)
#ax2.title.set_text('Plot 2 - Histogram Count in Cyl '+Zrange+' for Elliptical Galaxies')
ax2.set_ylabel('Galaxy Counts')
ax2.set_xlabel(yfield)
counts, bins = np.histogram(RErange2[yfield].data,bins=binCount)
ax2.hist(bins[:-1], bins, weights=counts)
#fig.legend(loc="upper right")
#plt.axis([0, 3, 0, 0.8])

        
yfield = 'DistanceTo5nn'
ax3 = fig2.add_subplot(1, 3, 3)
#ax3.title.set_text('Plot 2 - Histogram Count in Cyl '+Zrange+' for Elliptical Galaxies')
ax3.set_ylabel('Galaxy Count')
ax3.set_xlabel(yfield)
counts, bins = np.histogram(RErange2[yfield].data,bins=binCount)
ax3.hist(bins[:-1], bins, weights=counts)
#fig.legend(loc="upper right")
#plt.axis([0, 3,        
plt.show()

मुझे और विवरण जोड़ने के लिए कहा जा रहा है लेकिन मेरा प्रश्न सीधे आगे है और मुझे नहीं पता कि कोड में समस्या कहां है, इसलिए सुनिश्चित नहीं है कि कोड को कैसे कम किया जाए।

1
Keith Sloan 20 जून 2021, 17:28
1
समस्या का पता लगाना कोड को कम करने की बात है।
 – 
Jody Klymak
20 जून 2021, 18:22

1 उत्तर

सबसे बढ़िया उत्तर

मुझे नहीं पता कि आपका कोड क्यों काम नहीं करता है। आपके अंत में जो हो रहा है उसे दोहराना कठिन है क्योंकि हमारे पास डेटा नहीं है।

नीचे दिया गया कोड, कमोबेश वही करता है जो आप चाहते हैं, यह सबप्लॉट के साथ दो आंकड़े बनाता है। हो सकता है कि आप वहां कुछ प्रेरणा प्राप्त कर सकें। मुझे लूप में आपकी समस्या (जहां सभी प्लॉट मूल रूप से समान हैं) की तरह प्लॉटिंग करना आसान लगता है

from matplotlib import pyplot as plt
import numpy as np
binCount = 20

data = {k: {l: np.random.multivariate_normal([0,0], [[0.1, 0.05], [.05, .3]], 500) 
for l in  ('uminusr', 'CountInCyl', 'DistanceTo5nn')}
    for k in ('1.5 >= Z > 1', '1 >= Z > 0')}



for zrange, d in data.items():
    
    fig, axes = plt.subplots(1, 3)
    fig.suptitle(f'Plot 1 - Histogram Red Galaxies {zrange} for Elliptical Galaxies')

    for (yfield, data), ax in zip(d.items(), axes):
    
        counts, bins = np.histogram(data,bins=binCount)
        ax.hist(bins[:-1], bins, weights=counts)
        ax.set_ylabel('Galaxy Count')
        ax.set_xlabel(yfield)
     
1
mortysporty 20 जून 2021, 23:46