matplotlib: রঙিন বার এবং এর পাঠ্য লেবেল


111

আমি colorbarএকটির জন্য একটি কিংবদন্তি তৈরি করতে চাই heatmap, যেমন লেবেলগুলি প্রতিটি পৃথক রঙের মাঝখানে থাকে। এখান থেকে ধার করা উদাহরণ :

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import ListedColormap

#discrete color scheme
cMap = ListedColormap(['white', 'green', 'blue','red'])

#data
np.random.seed(42)
data = np.random.rand(4, 4)
fig, ax = plt.subplots()
heatmap = ax.pcolor(data, cmap=cMap)

#legend
cbar = plt.colorbar(heatmap)
cbar.ax.set_yticklabels(['0','1','2','>3'])
cbar.set_label('# of contacts', rotation=270)

# put the major ticks at the middle of each cell
ax.set_xticks(np.arange(data.shape[1]) + 0.5, minor=False)
ax.set_yticks(np.arange(data.shape[0]) + 0.5, minor=False)
ax.invert_yaxis()

#labels
column_labels = list('ABCD')
row_labels = list('WXYZ')
ax.set_xticklabels(column_labels, minor=False)
ax.set_yticklabels(row_labels, minor=False)

plt.show()

এটি নিম্নলিখিত প্লট তৈরি করে:

pmesh চক্রান্ত

মূলত আমি একজন কিংবদন্তি বার চারটি রং এবং প্রতিটি রঙের জন্য তার কেন্দ্রে একটি লেবেল আছে জেনারেট করতে চাই: 0,1,2,>3। এটা কিভাবে অর্জন করা সম্ভব?

উত্তর:


117
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import ListedColormap

#discrete color scheme
cMap = ListedColormap(['white', 'green', 'blue','red'])

#data
np.random.seed(42)
data = np.random.rand(4, 4)
fig, ax = plt.subplots()
heatmap = ax.pcolor(data, cmap=cMap)

#legend
cbar = plt.colorbar(heatmap)

cbar.ax.get_yaxis().set_ticks([])
for j, lab in enumerate(['$0$','$1$','$2$','$>3$']):
    cbar.ax.text(.5, (2 * j + 1) / 8.0, lab, ha='center', va='center')
cbar.ax.get_yaxis().labelpad = 15
cbar.ax.set_ylabel('# of contacts', rotation=270)


# put the major ticks at the middle of each cell
ax.set_xticks(np.arange(data.shape[1]) + 0.5, minor=False)
ax.set_yticks(np.arange(data.shape[0]) + 0.5, minor=False)
ax.invert_yaxis()

#labels
column_labels = list('ABCD')
row_labels = list('WXYZ')
ax.set_xticklabels(column_labels, minor=False)
ax.set_yticklabels(row_labels, minor=False)

plt.show()

আপনি খুব কাছের ছিল। একবার আপনার কাছে রঙ বার অক্ষের রেফারেন্স হয়ে গেলে মাঝখানে পাঠ্য লেবেল যুক্ত করে আপনি যা যা করতে চান তা করতে পারেন। এটিকে আরও দৃশ্যমান করার জন্য আপনি ফর্ম্যাটিংয়ের সাথে খেলতে চাইতে পারেন।

ডেমো


6

টাকাসওয়েলের উত্তরে যুক্ত করতে , colorbar()ফাংশনে একটি caxpassচ্ছিক ইনপুট রয়েছে যা আপনি অক্ষটি পাস করতে ব্যবহার করতে পারেন যার উপরে রঙবার আঁকতে হবে। আপনি যদি এই ইনপুটটি ব্যবহার করে থাকেন তবে আপনি সরাসরি সেই অক্ষটি ব্যবহার করে একটি লেবেল সেট করতে পারেন।

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable

fig, ax = plt.subplots()
heatmap = ax.imshow(data)
divider = make_axes_locatable(ax)
cax = divider.append_axes('bottom', size='10%', pad=0.6)
cb = fig.colorbar(heatmap, cax=cax, orientation='horizontal')

cax.set_xlabel('data label')  # cax == cb.ax

4
আমি মনে করি এটি axes_grid1পরিবর্তে হওয়া উচিত axes.grid1
rvf
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.