2011-12-09 13 views
9

मैं एक अक्ष लेबल मुद्रित करना चाहता हूं: "तापमान (℃)"। मैं यह कैसे करुं?मैं matplotlib के साथ सेल्सियस प्रतीक कैसे मुद्रित करूं?

# -*- coding: utf-8 -*- 
import matplotlib.pyplot as plt 
x = range(10,60,1) 
y = range(-100, 0, 2) 
fig = plt.figure() 
ax = fig.add_subplot(111) 
ax.plot(x,y) 
ax.set_xlabel('Temperature (℃)') 

कि अंतिम पंक्ति मैं कोशिश की है के लिए:: एक टुकड़ा यह है

ax.set_xlabel('Temperature (℃)'.encode('utf-8')) 

ax.set_xlabel(u'Temperature (u\2103)') 

ax.set_xlabel(u'Temperature (℃)') 

ax.set_xlabel(u'Temperature (\u2103)') 

ax.set_xlabel('Temperature (\u2103)') 

मैं सिर्फ यह नहीं मिलता है। मैं स्पाइडर का उपयोग कर रहा हूं और वहां से कोड चला रहा हूं।

+1

क्या आपका कोड स्पाइडर के बाहर स्क्रिप्ट के रूप में चलाने पर काम करता है? – unutbu

+0

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

उत्तर

18

उपयोग LaTeX दुभाषिया डिग्री प्रतीक बनाने के लिए।

ax.set_xlabel('Temperature ($^\circ$C)') 

यहाँ परिणाम है:

enter image description here

+3

मुझे लगता है कि यह मेरे लिए सबसे अच्छा समाधान है। यह मेरे आकृति लेबल को मेरे पाठ से मेल करने का लाभ भी है (मैं टाइपसेटिंग के लिए लाटेक्स का उपयोग करता हूं)। $^\ सर्कल $ सी के बजाय, मैंने \ textcelsius का उपयोग किया। –

6
ax.set_xlabel(u'Temperature (℃)') 

काम करना चाहिए:

enter image description here

In [56]: matplotlib.__version__ 
Out[56]: '1.0.1' 
+0

यदि ओपी आईपीथॉन के पुराने संस्करण का उपयोग कर रहा है, तो यह काम नहीं कर सकता है - कुछ यूनिकोड बग – wim

+0

ओह, क्षमा करें, वह स्पाइडर – wim

+0

का उपयोग कर रहा है लगता है कि स्पाइडर utf-8 का समर्थन नहीं करता है। मैं "Ctrl + Shift + U" लिखें कुंजी विधि का उपयोग कर utf-8 वर्णों को भी दर्ज नहीं कर सकता। स्पाइडर का संपादक बस इसे अनदेखा करता है और 'यू' में प्रवेश करता है। मैं gnome के चरित्र मानचित्र एप्लिकेशन से सेल्सियस प्रतीक की प्रतिलिपि बना रहा था। –

6

के बजाय डिग्री सेल्सियस U + 2103 (℃), डिग्री पर हस्ताक्षर का उपयोग U + 00B0 (°) बड़े अक्षर द्वारा पीछा किया। फ़ॉन्ट कवरेज सहित कई कारणों से यह अधिक सुरक्षित है। यह Unicode Standard (15.2 लेटरप्लेक्स प्रतीकों; पृष्ठ 481) में अनुशंसित तरीका भी है।

1

या:

ax.set_xlabel(u'Temperature (\N{DEGREE SIGN}C)') 

आप इसे टेक्स और गैर टेक्स को संगत बनाने के लिए चाहते हैं, तो एक शायद if rcParams['text.usetex'] से पहले हाथ के साथ दोनों तरीकों और परीक्षण का उपयोग करना पड़ता है। उदाहरण के लिए यह how it's done in basemap है। स्पाइडर उपयोगकर्ताओं के लिए

0

अद्यतन:

$^\ circ $ - काम करता है!

\ N {डिग्री इन} - मुझे लोअर केस गामा प्रतीक देता है ...

3

लेटेक्स दुभाषिया के बिना matplotlib में यह काम करने के लिए, और स्वरूपण यूनिकोड चरित्र स्ट्रिंग

from numpy import arange, cos, pi 
from matplotlib.pyplot import (figure, axes, plot, xlabel, ylabel, title, 
           grid, show) 
figure(1, figsize=(6,4)) 
ax = axes([0.1, 0.1, 0.8, 0.7]) 
t = arange(0.0, 1.0 + 0.01, 0.01) 
s = 3*cos(2*pi*t)+25 
plot(t, s) 

title('Average High Temperature') 
xlabel('Year') 
ylabel(u'Temp (\u00B0C)') 
grid(True) 
show() 
यूनिकोड का उपयोग

enter image description here

+0

यह सबसे अच्छा आईएमओ दिखता है; LaTeX $ \ circ $ सर्कल रास्ता बहुत छोटा है। –

संबंधित मुद्दे