只要簡單幾步調整,matplotlib做出來的條形圖也很好看!

2021-03-02 可視化圖鑑

大家好,我是早起。

有人說matplotlib做出來的圖很低級,早起想說,那是你不會配色

本文講解如何調整色以及通過添加注釋,用matplotlib做出一張好看的柱狀圖,也是「早起Python」年度報告中的一幅圖。

和之前一樣先分析一下這張圖的思路

首先還是先導入包與字體設置,注意這裡沒有使用全局字體而是使用臨時的字體,詳情看組件設置中字體設置文檔

import matplotlib
print(matplotlib.__version__) #查看Matplotlib版本
import pandas as pd
print(pd.__version__) #查看pandas版本
import numpy as np
print(np.__version__) #查看numpy版本
import matplotlib.pyplot as plt 
plt.rcParams['font.sans-serif'] = ['STHeiti']  #設置中文
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
un_font = mpl.font_manager.FontProperties(fname = 'Shojumaru.ttf') 
cn_font = mpl.font_manager.FontProperties(fname = '阿里巴巴普惠體 M.ttf') 
cn_font1 = mpl.font_manager.FontProperties(fname = '思源黑體 CN Heavy.otf') 

接下來第一步,先搞出來一張水平條形圖,這在基礎柱狀圖系列中有詳細講過,使用plt.barh就行了

x = ['其他 ','46-60歲 ','36-45歲 ','26-35歲 ','18-25歲 ']
y = [1220,1403,4215,12032,13934]
fig,ax=plt.subplots(figsize = (6,4),dpi=100)
plt.barh(x, y)

當然這樣的條形圖並不好看,我們調整柱子寬度與顏色,並添加邊框

plt.barh(x, y,height = 0.6, color = ['#cf89f1','#fac348','#66d88e','#72cff6','#fa9333'],edgecolor = 'black')

瞬間感覺還不錯了,有木有,我們繼續,接下來添加標題、取消四周邊框,並調整y軸文字

ax.set_facecolor('none')
plt.gca().spines["top"].set_alpha(0)
plt.gca().spines["bottom"].set_alpha(0)
plt.gca().spines["right"].set_alpha(0)
plt.gca().spines["left"].set_alpha(0)

plt.yticks(x, labels=x,rotation = 0,color = '#687eff',fontsize = 9,family = 'Songti SC')
plt.text(0, 4.9, '早起Python 粉絲年齡分布', fontsize = 13,color = '#0000CD',alpha = 0.7,fontproperties = cn_font1)
plt.xticks([]) #去掉x軸

這裡用到的都是最基礎的組件修改,不過多解釋,所有部分在菜單欄組件設置中都提供了對應的文檔,最後只需要在右下角添加文字即可。

使用的是plt.text,沒有什麼難度

plt.text(13000, 1.8, 'No.1', fontsize = 16,color = '#FF8C00',fontproperties = cn_font1)
plt.text(13000, 0.8, 'No.2', fontsize = 16,color = '#72cff6',fontproperties = cn_font1)
plt.text(13000, -0.2, 'No.3', fontsize = 16,color = '#66d88e',fontproperties = cn_font1)

plt.text(15500, 1.75, '18-25歲', fontsize = 20,color = '#FF8C00',fontproperties = cn_font1)
plt.text(15500, 0.75, '26-35歲', fontsize = 20,color = '#72cff6',fontproperties = cn_font1)
plt.text(15500, -0.25, '36-45歲', fontsize = 20,color = '#66d88e',fontproperties = cn_font1)

plt.text(14100, 3.9, '13934', fontsize = 9,color = '#F08080',fontstyle='italic',family = 'serif',weight = 'heavy')
plt.text(12300, 2.9, '12032', fontsize = 9,color = '#F08080',fontstyle='italic',family = 'serif',weight = 'heavy')    
plt.text(4400, 1.9, '4215', fontsize = 9,color = '#F08080',fontstyle='italic',family = 'serif',weight = 'heavy')
plt.text(1600, 0.9, '1403', fontsize = 9,color = '#F08080',fontstyle='italic',family = 'serif',weight = 'heavy')
plt.text(1400, -0.1, '1220', fontsize = 9,color = '#F08080',fontstyle='italic',family = 'serif',weight = 'heavy')
plt.text(12700,1.28,'--',fontsize = 20,color = '#6495ED')
plt.text(12700,0.28,'--',fontsize = 20,color = '#6495ED')

最後一幅純matplotlib做出來的條形圖就完成了,看起來還不錯。

本文的全部代碼已經添加到圖鑑中,我已經將源碼上傳至GitHub,感興趣的讀者可以後臺回復柱狀圖獲取GitHub地址。找到【進階柱狀圖MA_A_09】下載並學習。

相關焦點

  • 使用Matplotlib繪製堆積條形圖
    在這種情況下,堆積條形圖是一個很好的選擇,它讓我們能更好地比較和分析數據。在本文中,我們將探討如何使用Python的Matplotlib構建這些可視化圖形。我將使用一個簡單的數據集來保存全球的遊戲副本的銷售數據(雖然這個數據集已經過時,但它適合我們的示例)。
  • 基於Python的圖表繪圖系統matplotlib,「動態條形圖」你了解嗎?
    雖然我沒有對國力提升做出什麼不可磨滅的貢獻,但是我可以探索下動態條形圖是怎樣繪製的,應該也算是傳播知識了吧(笑哭)。', ascending=True) .tail(10))dff結果:簡單解釋下,這裡並沒有複雜的代碼,都是常用的語法,除了一個df.eq(),這個方法主要是進行對比,將df中符合括號內變量要求的數據並提取出來,原始的數據中包含了從2010–2019的所有數據,這裡只需要2019年的,所以通過這種方式把2019年的數據提取出來。
  • 如何用 Matplotlib 畫一張好看的圖
    import matplotlib.pyplot as pltimport seaborn as sns%matplotlib inline# 設置中文字體為微軟雅黑plt.rcParams['font.sans-serif'] = 'SimHei'先用Seaborn生成一張基礎的柱狀圖
  • matplotlib庫繪製折線圖、子圖及條形圖
    前面幾節我們學習了python中numpy和pandas庫的一些常用操作,接下來幾個章節,我們學習一個非常重要的數據可視化庫matplotlib(seaborn庫也有有所涉及)。這裡我們需要知道,matplotlib庫主要繪製一些2D圖形和簡單的3D圖形。
  • 超好看!手把手教你用Matplotlib畫一張好看的圖
    Matplotlib進階圖表繪圖第一篇,手把手教你如何從0到1畫出一張好看的圖。import matplotlib.pyplot as pltimport seaborn as sns%matplotlib inline# 設置中文字體為微軟雅黑plt.rcParams['font.sans-serif'] = 'SimHei'先用Seaborn生成一張基礎的柱狀圖
  • Python 數據分析:Matplotlib 繪圖
    簡介Matplotlib 是 Python 提供的一個繪圖庫,通過該庫我們可以很容易的繪製出折線圖、直方圖、散點圖、餅圖等豐富的統計圖,安裝使用 pip install matplotlib 命令即可,Matplotlib 經常會與 NumPy 一起使用。
  • matplotlib的Python數據可視化和探索——入門指南
    Matplotlib提供了一種簡單而全面的可視化方法來介紹我們的發現。我們將在本教程中很快看到,有很多可視化可供選擇,以展示我們的結果。從直方圖到散點圖,matplotlib設置了一系列顏色,主題,調色板和其他選項以自定義和個性化我們的圖。
  • Matplotlib圖鑑|基礎散點圖
    首先導入相關庫並查看版本import matplotlibprint(matplotlib.__version__) #查看Matplotlib版本import pandas as pdprint(pd.
  • Python可視化:學會Matplotlib這幾點就夠了!
    今天我們就來介紹一下必備的Matplotlib可視化關鍵的幾點,只要了解了這幾點就夠了。(3)可視化不同圖形函數常用:plt.plot(x,y,fmt,…) 繪製一個折線圖plt.boxplot(data,notch,position) 繪製一個箱形圖plt.bar(left,height,width,bottom) 繪製一個條形圖plt.barh(width,bottom,left,height) 繪製一個橫向條形圖
  • geopandas+matplotlib製作好看的地圖~
    在matplotlib中,製作地理圖表需要依賴一些第三方庫,比如basemap、geopandas等,本文將基於geopandas講解如何製作早起Python年度報告中的地圖。在搞定了相關依賴庫之後,我們進入notebook,先導入相關庫import pandas as pdimport numpy as npimport geopandas as gpimport matplotlib.pyplot as pltfrom
  • 如何用matplotlib繪圖呢?
    什麼是matplotlib?使用過python做數據分析的小夥伴都知道,matplotlib是一款命令式、較底層、可定製性強、圖表資源豐富、簡單易用、出版質量級別的python 2D繪圖庫。最適合來運行matplotlib繪圖的工具是jupyter notebook,本教程也是基於該工具做實驗。這是一種交互式筆記本,在瀏覽器上運行代碼,能直接顯示運行結果和圖表,詳情可見jupyter notebook介紹。哪些圖表可以用matplotlib繪製呢?
  • Python 繪圖庫 Matplotlib 入門教程
    將其繪製出來。很顯然,繪製出來的值對應了圖中的縱坐標(y軸)。而matplotlib本身為我們設置了圖形的橫坐標(x軸):[0, 100],因為我們剛好有100個數值通過plt.show()將這個圖形顯示出來這段代碼非常的簡單,運行起來也是一樣。
  • python matplotlib模塊
    調用畫圖方法調用pyplot模塊的繪圖方法畫出圖像,基本的畫圖方法有:plot(將各個點連成曲線圖)、scatter(畫散點圖),bar(畫條形圖)還有更多方法。解析Matplotlib 裡的常用類的包含關係為 Figure -> Axes -> (Line2D, Text, etc.)一個Figure對象可以包含多個子圖(Axes),在matplotlib中用Axes對象表示一個繪圖區域,可以理解為子圖。
  • 高效使用 Python 可視化工具 Matplotlib
    基本前提如果你除了本文之外沒有任何基礎,建議用以下幾個步驟學習如何使用matplotlib:學習基本的matplotlib術語,尤其是什麼是圖和坐標軸始終使用面向對象的接口,從一開始就養成使用它的習慣用基礎的pandas繪圖開始你的可視化學習用seaborn進行更複雜的統計可視化用matplotlib來定製
  • 第92天:Python Matplotlib 進階操作
    這些值使用 matplotlib 軟體包的 pyplot 子模塊的 plot() 函數繪製。正餘弦波形圖在一張圖中顯示出正弦函數和餘弦函數,這裡需要使用 subplot 來建立網格圖,一幅圖中使用兩個網格,兩個網格中分別展示正弦函數和餘弦函數;subplot 函數使用說明如下:matplotlib 中
  • Python matplotlib基礎繪圖函數示例
    (data,notch,position)繪製一個箱形圖plt.bar(left,height,width,bottom)繪製一個條形圖plt.barh(width,bottom,left,height)繪製一個橫向條形圖plt.polar(theta, r)繪製極坐標圖plt.pie(data
  • 見識matplotlib:不常見的一面,折線圖!
    總之不管有什麼樣的想法,matplotlib大概率都能想辦法實現,3D圖像也不在話下,比如官網首頁的那四個圖最後一個就是3D的呢!嗯~?太小?看不清?這都不叫事兒,3D清晰大圖來一個!個人感覺這個像帽子一樣的3D圖,不論是從配色還是到形狀都還挺好看的。這「帽子」是官網上給的示例圖,只不過背景上的格子線和刻度被我去掉了,看起來還蠻有質感的樣子。
  • matplotlib繪圖的核心原理講解
    作者:朱小五來自:凹凸數據(ID:alltodata)matplotlib是基於Python語言的開源項目,旨在為Python提供一個數據繪圖包。相信大家都用過它來數據可視化,之前我還分享過25個常用Matplotlib圖的Python代碼。
  • python使用matplotlib畫動態圖
    matplotlib是python的核心繪圖庫,是python的一個開源項目,旨在為python提供一個繪圖庫。matplotlib與numpy組合是一種可行的matlab替代方案。在可視化中matplotlib是最常使用的工具,是對數據整體判斷、效果預測不可或缺的重要模塊。
  • pandas和matplotlib繪製簡單圖形
    1.加載包2.數據讀取3.繪圖    3.1折線圖    3.2條形圖    3.3散點圖    3.4餅圖    3.5箱體圖    3.6直方圖    3.7同一類型的一頁多圖上周,我們介紹了python的groupby函數和NA值的填充,我們學會部分基礎的數據處理方法。