日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

精心总结了10个matplotlib绘图技巧,短小精悍,威力无穷

發布時間:2024/1/18 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 精心总结了10个matplotlib绘图技巧,短小精悍,威力无穷 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 一、快速且正確的顯示中文
    • 二、提高分辨率
    • 三、添加數學公式
    • 四、一行代碼提高顏值
    • 五、調整圖例位置
    • 六、獲得當前繪圖區域
    • 七、隱藏坐標軸
    • 八、指定坐標軸刻度
    • 九、添加自定義圖片
    • 十、添加表格

大家好,在使用 Python 進行數據可視化時,相信不論是什么工具,你都會發現有些操作/代碼段會頻繁的用到,這一點在matplotlib上尤為突出。

本文就向大家分享十個我常用的一些小技巧,大多一行代碼,短小精悍,威力無窮。喜歡記得收藏、點贊、關注。

一、快速且正確的顯示中文

在matplotlib中,默認是沒法顯示中文的,原因很簡單,默認使用的字體文件中不含中文。

當你搜索如何設置中文時,會有很多教程,我曾經也詳細的介紹過3種方法,但是在有的電腦上折騰很久也搞不定,所以當你浪費了太多時間也沒法解決,或者在一臺陌生的設備上使用,需要快速的讓matplotlib顯示中文可以使用下面的代碼。

import matplotlib as mplWRYH = mpl.font_manager.FontProperties(fname='/Users/font/WeiRuanYaHei-1.ttf') # 微軟雅黑字體plt.title('可視化', fontproperties=WRYH)

很簡單,既然修改默認的字體搞不定,那么就準備一個中文字體的路徑,并在每次需要顯示中文的組件(標題、注釋、圖例等)時,就強制指定使用這個字體。

這個辦法一定可以讓你圖中的中文快速且正確顯示出來,但是如果涉及中文的地方過多,還是需要在以后嘗試一勞永逸的將中文字體添加到默認字體集中。

二、提高分辨率

如果感覺默認生成的圖形分辨率不夠高,可以嘗試修改 dpi 來提高分辨率,在matplotlib中可以一次性通過plt.rcParams修改,也可以在創建畫布時為這一次的繪制修改,例如將分辨率調整至100

plt.figure(figsize = (7,6),dpi =100)

如果你的設備是配備Retina屏幕的mac,可以在jupyter notebook中,使用下面一行代碼有效提高圖像畫質

%config InlineBackend.figure_format = 'retina'

三、添加數學公式

有時我們在繪圖時需要添加帶有數學符號、公式的文字,如果直接使用默認的方法添加,雖然可以實現,但是不夠美觀,其實在matplotlib中也支持輸出數學公式,就像下面的文字注釋一樣

只用在需要出現公式的位置使用r’你的公式’即可,比如plt.text(11000,0.45,r'擬合的曲線為$f(x) = 1.3x^2-6.54x+0.5$')注意$$中是latex格式的表達方式,如果不熟悉的話需要自行搜索。

當然,也可以使用plt.rcParams['text.usetex'] = True設置默認tex輸出,異曲同工,此處不多介紹。

四、一行代碼提高顏值

有時我們會覺得matplotlib默認制作出來的圖片太樸素了,不夠高級,其實開發者也內置了幾十種主題讓我們自己選擇,只要使用plt.style.use('主題名')指定主題即可。

例如使用R語言中經典的ggplot主題

plt.style.use('ggplot')

另外一種提高圖形顏值的代碼是借用seaborn調色板修改配色,也是一行代碼,通過sns.set_palette(xxxx)就能直接調整全局配色方案,下面是我比較喜歡的一種配色

import seaborn as sns sns.set_palette("pastel", 8)

五、調整圖例位置

雖然matplotlib在生成圖例時,默認會選擇一個最合適的位置,但是有時依舊不能讓人滿意。

相信你知道我們可以使用loc = xxxx自己設置圖例位置,但是對于xxxx每次都要查,看文字說明左上右下不如一張圖來的快,下面是我們可以選擇的9個位置,可以根據自己的需要進行選擇。

六、獲得當前繪圖區域

在原理篇文章中,我曾經說到如果想要獲得更精細的調整,就需要使用ax.xxxx進行調整,但有時我們開始沒有使用fig,ax=plt.subplots(figsize = (6,4),dpi=100)來定義ax,在需要使用時重新開始并定義是不推薦的,這時可以使用

ax = plt.gca()

獲得當前Figure中的Axes,并繼續正常使用ax.xxxx調整

七、隱藏坐標軸

對于有些圖形我們希望通過隱藏坐標軸來顯得更加美觀,這時可以ax.spines獲取對應位置的的Spine對象,之后便可以任意修改是否顯示與顯示顏色,比如讓右邊和上面的線消失或者修改顏色

ax.spines['right'].set_color('None') ax.spines['top'].set_color('None')

ax.spines['right'].set_color('deeppink') ax.spines['top'].set_color('blue') ax.spines['bottom'].set_color('green') ax.spines['left'].set_color('red')

八、指定坐標軸刻度

如果對于默認生成的坐標軸刻度不滿意,我們可以使用plt.yticks([])來自定義刻度,注意需要傳入一個你想要的刻度list,并且長度需要和刻度對應,例如下方代碼

label = ['2月7日','3月25日','5月13日','7月2日','8月21日','10月10日','11月29日','12月31日']plt.yticks(range(0,400,50), labels=label,rotation = 40,color = 'black')

當然如果label是空的話,可以結合上一個技巧把對應的坐標軸干掉,徹底消失

plt.yticks([])

九、添加自定義圖片

有時我們希望在對數據可視化后添加一些圖片來豐富元素,雖然可以使用ps添加,但其實matplotlib也可以獨立完成,總共分兩步:打開圖片——添加圖片

首先導入相關的包并根據圖片路徑導入

from matplotlib.offsetbox import (OffsetImage,AnnotationBbox) import matplotlib.image as mpimg arr_img = mpimg.imread('你的圖片位置')

接著就可以根據坐標將圖片添加到指定位置,詳細的設置可以參考官方文檔,下面的代碼可以拿走就用,根據效果調整坐標即可

imagebox = OffsetImage(arr_img, zoom=0.2) ab = AnnotationBbox(imagebox, [0.15,0.5],xybox=(170., -50.),xycoords='data',boxcoords="offset points",pad=0.5) ax.add_artist(ab)

十、添加表格

有時只用圖片很難傳遞更多的信息,幸運的是,在matplotlib中也可以使用plt.table來為圖片添加一張與之對應的表格,只需要將你的數據按照指定格式傳入即可。

下面是我在官方文檔示例的基礎上,添加漸變效果的表格

data = [[ 66386, 174296, 75131, 577908, 32015],[ 58230, 381139, 78045, 99308, 160454],[ 89135, 80552, 152558, 497981, 603535],[ 78415, 81858, 150656, 193263, 69638],[139361, 331509, 343164, 781380, 52269]]columns = ('Freeze', 'Wind', 'Flood', 'Quake', 'Hail') rows = ['%d year' % x for x in (100, 50, 20, 10, 5)] values = np.arange(0, 2500, 500) value_increment = 1000 colors = plt.cm.BuPu(np.linspace(0, 0.5, len(rows))) n_rows = len(data)index = np.arange(len(columns)) + 0.3 bar_width = 0.4plt.figure(figsize = (8,5),dpi =100) y_offset = np.zeros(len(columns)) cell_text = [] for row in range(n_rows):plt.bar(index, data[row], bar_width, bottom=y_offset, color=colors[row])y_offset = y_offset + data[row]cell_text.append(['%1.1f' % (x / 1000.0) for x in y_offset]) colors = colors[::-1] cell_text.reverse()the_table = plt.table(cellText=cell_text,rowLabels=rows,rowColours=colors,colLabels=columns,loc='bottom',cellColours=plt.cm.Blues(x))plt.subplots_adjust(left=0.2, bottom=0.2)plt.ylabel("Loss in ${0}'s".format(value_increment)) plt.yticks(values * value_increment, ['%d' % val for val in values]) plt.xticks([]) plt.title('Loss by Disaster')plt.show()

以上就是本文和大家總結的10個matplotlib小技巧,在未來的文章中我會繼續分享相關知識,也希望大家可以在使用一些數據可視化工具時可以不斷總結,不斷進步。

總結

以上是生活随笔為你收集整理的精心总结了10个matplotlib绘图技巧,短小精悍,威力无穷的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。