1. 程式人生 > >使用matplotlib繪圖時中文字型的解決方案

使用matplotlib繪圖時中文字型的解決方案

matplotlib是python中很強大的一款繪圖工具包,裡面提供了類似於條形圖、柱狀圖、折線圖等一系列常見的圖形的繪製方法。在繪圖的時候,經常要對圖中的相關資料進行標識以及新增圖例、標題等,但在matplotlib中,在使用中文的時候經常會出現一些亂碼的問題,現提供以下幾種解決方案。

1. 第一種方法是使用matplot的reParams屬性來設定,具體 如下:

import pandas as pd
import matplotlib.pyplot as plt

catering_sale = './data/catering_sale.xls'
data = pd.read_excel(catering_sale, index_col=u'日期')
data.describe()
# 使用盒圖來展示資料
plt.rcParams['font.sans-serif'] = ['SimHei']  # 中文字型設定
plt.rcParams['axes.unicode_minus'] = False
plt.figure()
p = data.boxplot()  # 盒圖
x = p['fliers'][0].get_xdata()
y = p['fliers'][0].get_ydata()
y.sort()

for i in range(len(x)):
    if i >0:
            plt.annotate(y[i], xy=(x[i], y[i]), xytext=(x[i]+0.05 -0.8/(y[i] -y[i-1]), y[i]))
    else:
            plt.annotate(y[i], xy=(x[i], y[i]), xytext=(x[i]+0.08, y[i]))
plt.show()


2. 第二種方法是使用matplotlib裡面的font_manager工具,主要步驟如下:

(1)匯入font_manager:  

import matplotlib.font_manager as fm

(2)找到中文字型在電腦中的位置,匯入中文字型庫

zhfont1 = fm.FontProperties(fname='C:\Windows\Fonts\msyh.ttc')  # 字型位置

(3)對於繪圖中中文出現的不同位置,可以有以下的解決方案:

a. 圖例中出現中文:

  plt.legend(prop=zhfont1)

b. title和橫縱座標等地方出現中文:

plt.xlabel('性別'

,fontproperties=zhfont1)

plt.ylabel('人數',fontproperties=zhfont1)

plt.title('直方圖',fontproperties=zhfont1)

plt.xticks( (0,1),('男','女') ,fontproperties=zhfont1)

如果有希臘字母時,使用雙"$...$"符號,如plt.xlabel(u'$ω$')

下面展示一個例子:

import matplotlib.pyplot as plt
import matplotlib.font_manager as fm

# 匯入中文字型庫
zhfont1 = fm.FontProperties(fname='C:\Windows\Fonts\msyh.ttc')  # 字型位置
SAX = [43.97,53.18,65.80,104.06]
SAX_TD = [56.84,79.94,122.95,214.56]
SAX_SM = [57.12,77.66,117.66,194.22]
w = ['2','4','8','16']
x = range(len(w))
plt.xticks(x, w)
plt.title(u'不同分段時的執行時間', fontproperties=zhfont1)  #title包含中文
plt.xlabel(u'$ω$')  # x軸含希臘字母
plt.ylabel('time(s)')
plt.yticks([50,100,150,200])
plt.plot(SAX, 'g-',label='SAX')
plt.plot(SAX_SM,'b-',label='SAX_SM')
plt.plot(SAX_TD,'r-',label='SAX_SM')
plt.legend(loc='best')  # 圖例的位置
plt.show()

相關推薦

使用matplotlib繪圖中文字型解決方案

matplotlib是python中很強大的一款繪圖工具包,裡面提供了類似於條形圖、柱狀圖、折線圖等一系列常見的圖形的繪製方法。在繪圖的時候,經常要對圖中的相關資料進行標識以及新增圖例、標題等,但在matplotlib中,在使用中文的時候經常會出現一些亂碼的問題,現提供以下

解決Windows系統下python利用matplotlib繪圖中文亂碼的問題

不講道理,直接上解決方案 第一步: 進入windows系統自帶的字型資料夾中,自己電腦能支援的所有字型都在這 裡面。進入方法:控制面板-->外觀和個性化-->字型,進入後的介面如下圖所示: 第二步: 在這個資料夾中找到“

python matplotlib繪圖使用中文字型

由於專案關係,需要使用到資料分析,之前有自學過python,自然想到使用python繪圖。 進而接觸到Matplotlib,經過幾天的學習,不得不說Matplotlib是一個十分powerful的繪圖工具。 下面介紹如何在繪製的matplotlib圖中使用中文。 參考網上其

jodconverter純文字檔案轉為pdf中文問題解決方案

jodconverter轉換ms檔案都沒有出現中文問題,但是在轉換最簡單的純文字檔案時卻出現中文問題。我開始時找了cpdetecter來探測純文字檔案的編碼格式,但是對一些檔案的編碼格式還是探測不對,所以想通過它探測到文字檔案的編碼格式,再將它轉為UTF-8的方式來實現文

Android ExifInterface 圖片資訊 讀取中文亂碼解決方案

對於圖片資訊的讀取,通過android本身提供ExifInterFace這個類可以實現。 對於ExifInterface這個類的TAG解釋可以檢視:https://developer.android.google.cn/reference/android/media/Exi

【轉載】Fonts.css -- 跨平臺中文字型解決方案

font-family: -apple-system, "Helvetica Neue", Helvetica, "Nimbus Sans L", Arial, "Liberation Sans", "PingFang SC", "Hiragino Sans GB", "Source Han Sans CN"

Matplotlib中文亂碼解決方案

Matplotlib,jupyter中文亂碼解決方案 1–座標軸中文亂碼 2–標題亂碼 解決方案 首先下載一種字型 :Mircosoft YaHei UI;如果在C:\Windows\Fonts找到的話就直接拷貝到[your python_in

ubuntu MySQL數據庫輸入中文亂碼 解決方案

title str itl alt 查詢 ref cte class nbsp 一、登錄MySQL查看用SHOW VARIABLES LIKE ‘character%’;下字符集,顯示如下:+--------------------------+--------------

oracle服務端與客戶端字符集不同導致中文亂碼解決方案

use 修改環境變量 描述 image nls_lang oracle服務 環境 分析 導致 1.問題描述 用pl/sql登錄時,會提示“數據庫字符集(ZHS16GBK)和客戶端字符集(2%)是不同的,字符集轉化可能會造成不可預期的後果”,具體問題是中文亂碼,如下圖 2.

發布或重啟線上服務抖動問題解決方案

image 初始 ack src 打印 優化 tsp 拷貝 信息 轉自http://www.cnblogs.com/LBSer/p/3703967.html 一、問題描述 在發布或重啟某線上某服務時(jetty8作為服務器),常常發現有些機器的load會飆到非常

Ubuntu中sublime和Foxit Reader不能使用中文輸入法解決方案

you ldconfig details com shu sudo directory upgrade 不能 雖然Ubuntu下面很多軟件同windows下一樣,但是經常會出現各種各樣的小問題,其中最讓人頭疼的是軟件中的輸入法問題。 sublime作為一個跨平臺的編輯軟件,

url傳遞中文解決方案總結

str art arch strong hive htm IT ID pos File文件控件,選中文件(圖片,flash,視頻)即立即預覽顯示 url傳遞中文的解決方案總結url傳遞中文的解決方案總結

MySQL數據庫中的中文亂碼解決方案

中文亂碼 數據庫MySQL 數據庫中輸入中文容易出現亂碼?(亂碼問題本源:參見http://blog.51cto.com/12042068/2115021)解決方法:1.在建表建庫的時候就指定默認編碼 utf8. CREATE TABLE table_name (

LoadRunner接口HTTP請求中中文亂碼解決方案

空格 con value 發送 nbsp toe string ner 字符串 今天項目經理要求壓一下實時代扣接口性能。那就開始寫腳本,腳本寫好調試發現接口請求參數姓名輸入中文亂碼。接著就網上找資料解決該問題。 1:想法:將中文轉成UTF-8,lr_convert_stri

idea操作mysql數據庫添加漢字出現亂碼解決方案

http nco har 一個 技術分享 格式 出現 clas 操作mysql 首先 然後 最後 在連接數據庫後面加一個指定編碼格式 編碼格式: characterEncoding=UTF-8    idea操作mysql數據庫添加漢字時出現亂碼解決方案

Eclipse中文亂碼解決方案

work cli 解決 ner update source 編碼問題 odin tex Eclipse中文亂碼解決方案 第一個設置:window>perferences>general>workspace>text file encoding

記一次SSH中文亂碼解決方案

前言:專案中有中文亂碼是因為亂碼編碼產生。 近期在用SSH寫OA系統的時候遇到中文亂碼問題,解決之餘寫下一丟丟心得,每天進步一小步,又與大神靠近一大步嘛!^_^! SSH是否還有公司在使用,SSH還配不醅稱為三大框架這裡先按下不表,這裡只是給出某次博主遇到問題的解決方案。 1

mac matplotlib繪圖顯示中文亂碼問題

例子 from matplotlib.font_manager import FontProperties font = FontProperties(fname='/Library/Fonts/Songti.ttc') plt.title(title,fontproperties=font) plt.yl

sublime中文亂碼解決方案

最近使用的sublime 編輯器出現了開啟寫好的程式,中文顯示的確是方框,方框裡面是問號,就是不顯示中文。  然後再網上查找了一下,大概都是說是需要中文編碼外掛,比如converttoutf8 gbk等編碼外掛來處理。 不過我發現導致這個問題的不是編碼錯誤,編碼是沒有問題的,都是utf8

Sublime Text在Ubuntu下無法輸入中文解決方案

解決中文輸入 https://blog.csdn.net/u012300744/article/details/80339452 建立桌面快捷圖示 https://linuxconfig.org/how-to-create-desktop-shortcut-launcher-on-ubuntu-18-0