python不能保存中文_Python 关于matplotlib无法显示中文字体的解决方法
#### 以下面的例子說明如何解決matplotlib畫圖中出現中文字體無法顯示問題
要畫出10-12點氣溫變化的圖像
```
from matplotlib import pyplot as plt
import random
x = range(0,120)
y = [random.randint(20,35) for i in range(120)]
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y)
x_ticks = ['10點{}分'.format(i) for i in range(60)]
x_ticks += ['11點{}分'.format(i) for i in range(60)]
plt.xticks(list(x)[::3],x_ticks[::3],rotation=45)
plt.xlabel('時間')
plt.ylabel('溫度:單位(℃)')
plt.title('十點到十二點氣溫變化情況')
```
運行出來的圖像如下:
可以看出來圖像中中文并沒有顯示出來,那么如何解決呢?下面提供三種方法,實質上第一第二種方法是一樣的:
##### 第一種:
```
from matplotlib import pyplot as plt
import random
import matplotlib as mpl
x = range(0,120)
y = [random.randint(20,35) for i in range(120)]
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y)
mpl.rcParams['font.sans-serif'] = ['Microsoft YaHei'] # 微軟雅黑
mpl.rcParams['font.serif'] = ['Microsoft YaHei']
mpl.rcParams['axes.unicode_minus'] = False # 解決保存圖像是負號'-'顯示為方塊的問題,或者轉換負號為字符串
x_ticks = ['10點{}分'.format(i) for i in range(60)]
x_ticks += ['11點{}分'.format(i) for i in range(60)]
plt.xticks(list(x)[::3],x_ticks[::3],rotation=45)
plt.xlabel('時間')
plt.ylabel('溫度:單位(℃)')
plt.title('十點到十二點氣溫變化情況')
```
這時運行出來的結果就有中文了:
##### 第二種方法:
```
from matplotlib import pyplot as plt
import random
import matplotlib
x = range(0,120)
y = [random.randint(20,35) for i in range(120)]
plt.figure(figsize=(20,8),dpi=80)
font = {'family' : 'Microsoft YaHei',
'weight' : 'bold',
'size' : '12'}
matplotlib.rc('font', **font)
plt.plot(x,y)
x_ticks = ['10點{}分'.format(i) for i in range(60)]
x_ticks += ['11點{}分'.format(i) for i in range(60)]
plt.xticks(list(x)[::3],x_ticks[::3],rotation=45)
plt.xlabel('時間')
plt.ylabel('溫度:單位(℃)')
plt.title('十點到十二點氣溫變化情況')
```
運行結果如下,完美解決了中文不顯示問題:
##### 第三種方法:
```
from matplotlib import pyplot as plt
import random
from matplotlib import font_manager
x = range(0,120)
y = [random.randint(20,35) for i in range(120)]
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y)
my_font = font_manager.FontProperties(fname='C:\WINDOWS\FONTS\MSYHL.TTC') # win字體路徑可在左下角搜索欄中輸入字體查看
_xtick_labels = ['10點{}分'.format(i) for i in range(60)]
_xtick_labels += ['11點{}分'.format(i) for i in range(60)]
plt.xticks(list(x)[::3],_xtick_labels[::3],rotation=45,fontproperties=my_font)
plt.xlabel('時間',fontproperties=my_font)
plt.ylabel('溫度:單位(℃)',fontproperties=my_font)
plt.title('十點到十二點氣溫變化情況',fontproperties=my_font)
```
運行出圖像如下:
這種方法除了麻煩之外,可以看出雖然縱坐標和標題的中文都顯示出來了,但是橫坐標從第二項開始就還是不顯示...
##### 推薦第一二種方法,第三種方法不知道是什么原因導致仍有未顯示的中文,望各位大佬有空閑時能幫忙分析一下原因,交流一下~
u1s1知乎啥時候引進markdown編輯器啊,這樣好亂啊。。。。
不嫌棄的話請移步俺的“嗅探熊”,探索更多黑科技!
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的python不能保存中文_Python 关于matplotlib无法显示中文字体的解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jpa onetoone_拥抱开源从表设
- 下一篇: d3.js html显示图片,d3.js