python - जालीदार अजगर




मैं अजगर में भूखंडों की एक श्रृंखला के लिए एक मानक रंग पट्टी कैसे बना सकता हूं (3)

@ Ianilis के जवाब चोरी नहीं करना है, लेकिन मैं एक उदाहरण जोड़ना चाहता था ...

कई तरीके हैं, लेकिन सबसे सरल है केवल vmin और vmax kwargs को imshow निर्दिष्ट करने के लिए। वैकल्पिक रूप से, आप matplotlib.cm.Colormap उदाहरण बना सकते हैं और इसे निर्दिष्ट कर सकते हैं, लेकिन यह सरल मामलों के लिए आवश्यक से अधिक जटिल है।

सभी छवियों के लिए एक रंगीन रंग के साथ एक त्वरित उदाहरण यहां दिया गया है:

import numpy as np
import matplotlib.pyplot as plt

# Generate some data that where each slice has a different range
# (The overall range is from 0 to 2)
data = np.random.random((4,10,10))
data *= np.array([0.5, 1.0, 1.5, 2.0])[:,None,None]

# Plot each slice as an independent subplot
fig, axes = plt.subplots(nrows=2, ncols=2)
for dat, ax in zip(data, axes.flat):
    # The vmin and vmax arguments specify the color limits
    im = ax.imshow(dat, vmin=0, vmax=2)

# Make an axis for the colorbar on the right side
cax = fig.add_axes([0.9, 0.1, 0.03, 0.8])
fig.colorbar(im, cax=cax)

plt.show()

मैं पाइथन में कुछ डेटा प्लॉट करने के लिए matplotlib का उपयोग कर रहा हूं और भूखंडों को मानक रंग बार की आवश्यकता होती है। डेटा में एनएक्सएम मैट्रिस की एक श्रृंखला होती है जिसमें आवृत्ति जानकारी होती है ताकि एक साधारण इमशो () साजिश आवृत्ति का वर्णन करने वाले रंग के साथ 2 डी हिस्टोग्राम प्रदान करे। प्रत्येक मैट्रिक्स में डेटा अलग-अलग होता है, लेकिन ओवरलैपिंग श्रेणियां होती हैं। Imshow प्रत्येक मैट्रिक्स में डेटा 0-1 के लिए सामान्यीकृत करता है जिसका अर्थ है कि, उदाहरण के लिए, मैट्रिक्स ए की साजिश मैट्रिक्स 2 * ए की साजिश के समान दिखाई देगी (हालांकि रंग बार मूल्यों को दोगुना दिखाएगा)। मुझे लाल रंग के लिए क्या चाहिए, उदाहरण के लिए, सभी भूखंडों में एक ही आवृत्ति के अनुरूप। दूसरे शब्दों में, सभी भूखंडों के लिए एक रंगीन बार पर्याप्त होगा। किसी भी सुझाव के लिए बहुत आभार होगा।


मैं उन समाधानों से खुश नहीं था जो मैन्युअल रूप से vmin और vmax सेट करने का सुझाव vmax , इसलिए मैंने प्रत्येक प्लॉट की सीमाओं को पढ़ने का निर्णय लिया और स्वचालित रूप से vmin और vmax सेट किया।

नीचे दिया गया उदाहरण सामान्य वितरण से उठाए गए नमूनों के तीन भूखंडों को दिखाता है जो औसत मूल्य बढ़ाते हैं।

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import ImageGrid
import numpy as np

numberOfPlots = 3
data = []
for i in range(numberOfPlots):
    mean = i
    data.append(np.random.normal(mean, size=(100,100)))

fig = plt.figure()
grid = ImageGrid(fig, 111, nrows_ncols=(1,numberOfPlots), cbar_mode='single')
ims = []
for i in range(numberOfPlots):
    ims.append(grid[i].imshow(data[i]))
    grid[i].set_title("Mean = " + str(i))

clims = [im.get_clim() for im in ims]
vmin = min([clim[0] for clim in clims])
vmax = max([clim[1] for clim in clims])
for im in ims:
    im.set_clim(vmin=np.floor(vmin),vmax=np.ceil(vmax))
grid[0].cax.colorbar(ims[0]) # with cbar_mode="single", cax attribute of all axes are identical    

fig.show()


सबसे आसान समाधान प्रत्येक प्लॉट के लिए समान तर्क के साथ क्लिम (low_limit, upper_limit) को कॉल करना है।





colorbar