मैटप्लोटलिब में एक भूखंड के शीर्ष पर एक्स-अक्ष ले जाना


111

मेटप्लोटलिब में हीटमैप्स के बारे में इस सवाल के आधार पर , मैं एक्स-एक्सिस शीर्षक को प्लॉट के शीर्ष पर ले जाना चाहता था।

import matplotlib.pyplot as plt
import numpy as np
column_labels = list('ABCD')
row_labels = list('WXYZ')
data = np.random.rand(4,4)
fig, ax = plt.subplots()
heatmap = ax.pcolor(data, cmap=plt.cm.Blues)

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

# want a more natural, table-like display
ax.invert_yaxis()
ax.xaxis.set_label_position('top') # <-- This doesn't work!

ax.set_xticklabels(row_labels, minor=False)
ax.set_yticklabels(column_labels, minor=False)
plt.show()

हालाँकि, matplotlib के set_label_position को कॉल करने पर (जैसा कि ऊपर नोट किया गया है) वांछित प्रभाव नहीं दिखता है। यहाँ मेरा उत्पादन है:

यहां छवि विवरण दर्ज करें

मैं क्या गलत कर रहा हूं?

जवाबों:


152

उपयोग

ax.xaxis.tick_top()

छवि के शीर्ष पर टिक निशान लगाने के लिए। आदेश

ax.set_xlabel('X LABEL')    
ax.xaxis.set_label_position('top') 

लेबल को प्रभावित करता है, टिक के निशान को नहीं।

import matplotlib.pyplot as plt
import numpy as np
column_labels = list('ABCD')
row_labels = list('WXYZ')
data = np.random.rand(4, 4)
fig, ax = plt.subplots()
heatmap = ax.pcolor(data, cmap=plt.cm.Blues)

# 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)

# want a more natural, table-like display
ax.invert_yaxis()
ax.xaxis.tick_top()

ax.set_xticklabels(column_labels, minor=False)
ax.set_yticklabels(row_labels, minor=False)
plt.show()

यहां छवि विवरण दर्ज करें


क्या आप मुझे बता सकते हैं कि B और C के बीच X अक्ष कैसे लगाया जाए? मैंने पूरे दिन कोशिश की लेकिन कोई सफलता नहीं मिली
DaniPaniz

33

आप set_ticks_positionइसके बजाय चाहते हैं set_label_position:

ax.xaxis.set_ticks_position('top') # the rest is the same

यह मुझे देता है:

यहां छवि विवरण दर्ज करें


क्या आप मुझे बता सकते हैं कि B और C के बीच X अक्ष कैसे लगाया जाए? मैंने पूरे दिन कोशिश की लेकिन कोई सफलता नहीं मिली
DaniPaniz

16

टिक गुण स्थापित करने के लिए tick_params बहुत उपयोगी है। लेबल को शीर्ष पर ले जाया जा सकता है:

    ax.tick_params(labelbottom=False,labeltop=True)

कंवर बूलियन हैं Falseऔर Trueक्रमशः होना चाहिए , अन्यथा पूरी तरह से काम करता है!
मिलो विल्डोन्डेक

1

यदि आप टिक्स (लेबल नहीं) चाहते हैं तो आपको ऊपर और नीचे (केवल ऊपर नहीं) दिखाने के लिए कुछ अतिरिक्त मालिश करनी होगी। जिस तरह से मैं यह कर सकता था वह एक छोटे बदलाव के साथ अनटुब के कोड में है:

import matplotlib.pyplot as plt
import numpy as np
column_labels = list('ABCD')
row_labels = list('WXYZ')
data = np.random.rand(4, 4)
fig, ax = plt.subplots()
heatmap = ax.pcolor(data, cmap=plt.cm.Blues)

# 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)

# want a more natural, table-like display
ax.invert_yaxis()
ax.xaxis.tick_top()
ax.xaxis.set_ticks_position('both') # THIS IS THE ONLY CHANGE

ax.set_xticklabels(column_labels, minor=False)
ax.set_yticklabels(row_labels, minor=False)
plt.show()

आउटपुट:

यहां छवि विवरण दर्ज करें


क्या आप मुझे बता सकते हैं कि B और C के बीच X अक्ष कैसे लगाया जाए? मैंने पूरे दिन कोशिश की लेकिन कोई सफलता नहीं मिली
DaniPaniz
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.