1. 程式人生 > >ipython中matplotlib中文顯示問題

ipython中matplotlib中文顯示問題

這裡寫圖片描述

from matplotlib.font_manager import fontManager 
import matplotlib.pyplot as plt 
import os 
import os.path 

fig = plt.figure(figsize=(12,8)) 
ax = fig.add_subplot(111) 
#subplots_adjust(left=None, bottom=None, right=None, top=None,wspace=None, hspace=None)
plt.subplots_adjust(0.04, 0.04, 0.99, 0.95, 0, 0
) plt.xticks([]) plt.yticks([]) x, y = 0.05, 0.18 #檢視你係統中所有可用的中文字型 fonts = [font.name for font in fontManager.ttflist if os.path.exists(font.fname) and os.stat(font.fname).st_size>1e6] font = set(fonts) dy = (1.0-y)/(len(fonts)/4 + (len(fonts)%4!=0)) for font in fonts: t = ax.text(x, y, font+":"
+u"中文C", {'fontname':font, 'fontsize':14}, transform=ax.transAxes) ax.text(x, y-dy/2, font, transform=ax.transAxes) x += 0.25 if x >= 1.0: y += dy x = 0.05 ax.set_xlabel(u'橫座標',{'fontname':'STKaiti'}) ax.set_ylabel(u'縱座標',{'fontname':'STHupo','fontsize':20}) plt.show()

檢視fonts內容列表:

[‘KaiTi’,
‘Malgun Gothic’,
‘STXingkai’,
‘Microsoft YaHei’,
‘Microsoft JhengHei’,
‘STXinwei’,
‘Nirmala UI’,
‘FZYaoTi’,
‘STKaiti’,
‘DFKai-SB’,
‘YouYuan’,
‘STXihei’,
‘Microsoft YaHei’,
‘STKaiti’,
‘Adobe Kaiti Std’,
‘STLiti’,
‘FangSong’,
‘LiSu’,
‘STSong’,
‘Arial Unicode MS’,
‘STFangsong’,
‘STSong’,
‘Malgun Gothic’,
‘SimHei’,
‘STHupo’,
‘STFangsong’,
‘SimSun-ExtB’,
‘Microsoft JhengHei’,
‘Adobe Fangsong Std’,
‘STZhongsong’,
‘STXinwei’,
‘Gabriola’,
‘Nirmala UI’,
‘FZShuTi’,
‘Adobe Fangsong Std’,
‘FZYaoTi’,
‘STCaiyun’,
‘Adobe Kaiti Std’,
‘STZhongsong’,
‘Nirmala UI’,
‘Adobe Heiti Std’,
‘Adobe Song Std’,
‘STHupo’,
‘STCaiyun’,
‘STLiti’,
‘Nirmala UI’,
‘STXingkai’,
‘Arial Unicode MS’,
‘Adobe Heiti Std’,
‘Adobe Song Std’,
‘YouYuan’,
‘Gabriola’,
‘LiSu’,
‘STXihei’,
‘FZShuTi’]

即使不在ipython環境下,這種中文顯示方式也是可用的。如

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import random

def mylogsig(mylist=range(-10,10),alpha=1.0):
    mylist = np.array(mylist)*alpha
    result = list(1.0/(1+np.exp(-mylist)))
    return result

mylambda = [1.5,0.5]
titles = [r'(a).$\lambda = 1.5$',r'(b).$\lambda = 0.5$']
num = 0

fig,axis = plt.subplots(nrows=2,ncols=1,figsize=(10,8))
fig.subplots_adjust(hspace=0.35)
x = range(-10,10)



for i in range(2):
    y = mylogsig(x,alpha=mylambda[num])
    axis[i].plot(x,y,'k-',linewidth=2)
    axis[i].plot(x,y,'bs')

    axis[i].set_xlabel(u'因變數n',{'fontname':'STFangsong','fontsize':18})
    axis[i].set_ylabel(u'函式值',{'fontname':'STFangsong','fontsize':18})
    axis[i].set_xticks(range(-10,11,1))
    axis[i].set_title(titles[num],fontsize=20)
    num += 1
    plt.savefig('mylogsig.png',dpi=400,bbox_inches='tight')

將其儲存成 .py檔案,雙擊執行。
這裡寫圖片描述
注意第一行的# -*- coding: utf-8 -*- 一定不能缺,否則會亂碼。