python matplotlib 進階與拓展

2021-12-17 智能數據分析技術與應用

•1、堆積圖

20名學生,它們的編號分別是0-19,y1、y2、y3分別代表本次月考他們的語文、數學和英語的成績。

兩種圖形:柱狀堆積圖和條狀堆積圖

(1)柱狀堆積圖

import matplotlib.pyplot as pltimport numpy as npimport matplotlib as mplmpl.rcParams['font.sans-serif'] = ['KaiTi']mpl.rcParams['axes.unicode_minus'] = False# 生成數據x = np.linspace(0, 20, 20)y1 = np.random.randint(50, 100, 20)y2 = np.random.randint(50, 100, 20)y3 = np.random.randint(50, 100, 20)
# 堆積柱狀圖plt.bar(x, y1, color='r', label='語文')plt.bar(x, y2, bottom=y1, color='g', label='數學')plt.bar(x, y3, bottom=y1+y2, color='c', label='英語')
# 顯示範圍plt.xlim(-2, 22)plt.ylim(0, 300)
# 添加圖例plt.legend(loc='upper right')plt.grid(axis='y', color='gray', linestyle=':', linewidth=2)
plt.show()

(2)條狀堆積圖

import matplotlib.pyplot as pltimport numpy as npimport matplotlib as mplmpl.rcParams['font.sans-serif'] = ['KaiTi']mpl.rcParams['axes.unicode_minus'] = False# 生成數據x = np.linspace(0, 20, 20)y1 = np.random.randint(50, 100, 20)y2 = np.random.randint(50, 100, 20)y3 = np.random.randint(50, 100, 20)
# 堆積柱狀圖plt.barh(x, y1, color='r', label='語文')plt.barh(x, y2, left=y1, color='g', label='數學')plt.barh(x, y3, left=y1+y2, color='c', label='英語')
# 顯示範圍plt.ylim(-2, 22)plt.xlim(0, 300)
# 添加圖例plt.legend(loc='lower right')
plt.show()

•2、堆積折線圖

小明參加了20次月考,想看下他的總成績以及語數外三科成績的變化趨勢。

import matplotlib.pyplot as pltimport numpy as npimport matplotlib as mplmpl.rcParams['font.sans-serif'] = ['KaiTi']mpl.rcParams['axes.unicode_minus'] = False# 生成數據# 假設一個班裡有20名學生,x代表他們的編號,y1/y2/y3分別是他們本次月考的成績。x = np.linspace(0, 20, 20)y1 = np.random.randint(50, 100, 20)y2 = np.random.randint(50, 100, 20)y3 = np.random.randint(50, 100, 20)
# 堆積柱狀圖plt.stackplot(x, y1, y2, y3, baseline='zero', labels=['語文', '數學', '英語'], colors=['r', 'g', 'c'])
# 顯示範圍plt.xlim(-2, 22)plt.ylim(0, 300)
# 添加圖例和網格線plt.legend(loc='upper right')plt.grid(axis='y', color='gray', linestyle=':', linewidth=2)
plt.show()

3、並列柱狀圖

多數據並列柱狀圖和多數據平行條形圖

在matplotlib中ticks表示的是刻度,而刻度有兩層意思,一個是刻標(locs),一個是刻度標籤(ticklabels)。在作圖時,x軸y軸都是連續的,所以刻標可以隨意指定,就是在連續變量上找尋位置,而刻度標籤則可以對應替換

xticks()返回了兩個對象,一個是刻標(locs),另一個是刻度標籤

locs, labels = xticks() # 顯示x軸的刻標

xticks( arange(6) ) # 顯示x軸的刻標以及對應的標籤

xticks( arange(5), ('Tom', 'Dick', 'Harry', 'Sally', 'Sue') )

(1)多數據並列柱狀圖

import numpy as npimport pandas as pdimport matplotlib as mplimport matplotlib.pyplot as pltmpl.rcParams['font.sans-serif'] = ['KaiTi']mpl.rcParams['axes.unicode_minus'] = False
x = np.arange(13)y2017=[141103,160706,75611,140435,162388,105903,58577,67909,70216,112559,125962,102058,53317,]y2016=[129194,143985,67701,124889,148146,94304,53626,63083,64065,100644,122686,89785,48797]bar_width=0.2tick_label=["南京","無錫","徐州","常州", "蘇州","南通","連雲港","淮安","鹽城","揚州","鎮江","泰州","宿遷"]plt.bar(x,y2016,bar_width,align="center",color="r",label="2016",alpha=0.5)plt.bar(x+bar_width,y2017,bar_width,align="center",color="b",label="2017",alpha=0.5)
plt.xlabel('地級市')plt.ylabel('人均GDP')plt.xticks(x+bar_width/2,tick_label) #xsticks與yticks:指定坐標軸的刻度plt.legend()plt.show()

(2)多數據平行條形圖

import numpy as npimport pandas as pdimport matplotlib as mplimport matplotlib.pyplot as pltmpl.rcParams['font.sans-serif'] = ['KaiTi']mpl.rcParams['axes.unicode_minus'] = False
x = np.arange(13)y2017=[141103,160706,75611,140435,162388,105903,58577,67909,70216,112559,125962,102058,53317,]y2016=[129194,143985,67701,124889,148146,94304,53626,63083,64065,100644,122686,89785,48797]bar_width=0.2tick_label=["南京","無錫","徐州","常州", "蘇州","南通","連雲港","淮安","鹽城","揚州","鎮江","泰州","宿遷"]plt.barh(x,y2016,bar_width,align="center",color="r",label="2016",alpha=0.5)plt.barh(x+bar_width,y2017,bar_width,align="center",color="b",label="2017",alpha=0.5)
plt.xlabel('人均GDP')plt.ylabel('地級市')plt.yticks(x+bar_width/2,tick_label) #xsticks與yticks:指定坐標軸的刻度plt.legend()plt.show()

4.多個折線圖

import matplotlib.pyplot as pltimport matplotlib as mplmpl.rcParams['font.sans-serif'] = ['KaiTi']mpl.rcParams['axes.unicode_minus'] = False
x_data = ['2011', '2012', '2013', '2014', '2015', '2016', '2017']# 構造數據y_data = [58000, 60200, 63000, 71000, 84000, 90500, 107000]y_data2 = [52000, 54200, 51500,58300, 56800, 59500, 62700]# 傳入2組分別代表X軸、Y軸的數據
plt.plot(x_data, y_data,label="C語言教程",color="b")plt.plot(x_data, y_data2,label="Python教程",color="r")# 調用show()函數顯示圖形# 添加兩組代表折線的數據plt.xlabel('銷量')#設置X軸標籤plt.ylabel('年份')#設置Y軸標籤plt.legend()plt.show()

5.堆積折線圖

import matplotlib.pyplot as pltimport matplotlib as mplmpl.rcParams['font.sans-serif'] = ['KaiTi']mpl.rcParams['axes.unicode_minus'] = False
x_data = ['2011', '2012', '2013', '2014', '2015', '2016', '2017']# 構造數據y_data = [58000, 60200, 63000, 71000, 84000, 90500, 107000]y_data2 = [52000, 54200, 51500,58300, 56800, 59500, 62700]# 傳入2組分別代表X軸、Y軸的數據labels=["C語言教程","Python教程"]colors=["b","r"]plt.stackplot(x_data, y_data, y_data2,labels=labels,colors=colors)# 調用show()函數顯示圖形# 添加兩組代表折線的數據plt.xlabel('銷量')#設置X軸標籤plt.ylabel('年份')#設置Y軸標籤plt.legend()plt.show()

6.三維圖形

(1)3d曲面圖

ax.plot_surface(X,Y, Z, rstride=1, cstride=1, cmap='rainbow')

from matplotlib import pyplot as pltimport numpy as npfrom mpl_toolkits.mplot3d import Axes3Dimport matplotlib as mplmpl.rcParams['font.sans-serif'] = ['KaiTi']mpl.rcParams['axes.unicode_minus'] = False
fig = plt.figure()ax = Axes3D(fig)# 生成代表X軸數據的列表X = np.arange(-4, 4, 0.25)# 生成代表Y軸數據的列表Y = np.arange(-4, 4, 0.25)# 對x、y數據執行網格化X, Y = np.meshgrid(X, Y)R = np.sqrt(X**2 + Y**2) #函數sqrt(x**2+y**2)# 計算Z軸數據(高度數據)Z = np.sin(R)
# 具體函數方法可用 help(function) 查看,如:help(ax.plot_surface)# rstride(row)指定行的跨度,cstride(column)指定列的跨度# cmap設置顏色映射ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')# 設置標題plt.title("3D曲面圖")plt.show()

(2)3d散點圖

.pyax.scatter(x[1000:4000],y[1000:4000],z[1000:4000],c='r')#繪點

import numpy as npimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3D
data = np.random.randint(0, 255, size=[40, 40, 40])
x, y, z = data[0], data[1], data[2]ax = plt.subplot(111, projection='3d') # 創建一個三維的繪圖工程# 將數據點分成三部分畫,在顏色上有區分度ax.scatter(x[:10], y[:10], z[:10], c='y') # 繪製數據點ax.scatter(x[10:20], y[10:20], z[10:20], c='r')ax.scatter(x[30:40], y[30:40], z[30:40], c='g')
ax.set_zlabel('Z') # 坐標軸ax.set_ylabel('Y')ax.set_xlabel('X')plt.show()

加入微信群「數據小蟲」,有更多驚喜!

在公眾號,或微信群留言,有更多最新數據!

公眾號會每天推薦相關數據,所有來自網際網路原始數據或資源,部分經過了處理,或者作者計算整理過,請需要者限於科研用,不得商用,出現糾紛與本公眾號無關。

請關注公眾號二維碼,並推薦給更多的朋友。

相關焦點

  • python使用matplotlib畫動態圖
    matplotlib是python的核心繪圖庫,是python的一個開源項目,旨在為python提供一個繪圖庫。matplotlib與numpy組合是一種可行的matlab替代方案。在可視化中matplotlib是最常使用的工具,是對數據整體判斷、效果預測不可或缺的重要模塊。
  • python:matplotlib入門詳細教程
    與之齊名,matplotlib作為數據科學的的另一必備庫,算得上是python可視化領域的元老,更是很多高級可視化庫的底層基礎,其重要性不言而喻。本篇對matplotlib進行系統性介紹,不會面面俱到,但求體系完備、詳略得當。
  • python數據科學系列:matplotlib入門詳細教程
    與之齊名,matplotlib作為數據科學的的另一必備庫,算得上是python可視化領域的元老,更是很多高級可視化庫的底層基礎,其重要性不言而喻。本篇對matplotlib進行系統性介紹,不會面面俱到,但求體系完備、詳略得當。
  • Python-Matplotlib: 官方學習手冊獲取與學習
    此外,matplotlib還有一個基於圖像處理庫(如開放圖形庫OpenGL)的pylab接口,其設計與MATLAB非常類似--儘管並不怎麼好用。SciPy就是用matplotlib進行圖形繪製。matplotlib最初由John D. Hunter撰寫,它擁有一個活躍的開發社區,並且根據BSD樣式許可證分發。在John D.
  • 第92天:Python Matplotlib 進階操作
    本章節主要是 Matplotlib 和 NumPy  實際操作案例講解,matplotlib 通常與 NumPy 一起使用,提供了一種有效的 MatLab 開源替代方案,除此之外,它還可以和其他圖形工具包搭配使用。
  • 如何用matplotlib繪圖呢?
    什麼是matplotlib?使用過python做數據分析的小夥伴都知道,matplotlib是一款命令式、較底層、可定製性強、圖表資源豐富、簡單易用、出版質量級別的python 2D繪圖庫。matplotlib算是python繪圖的元老級庫,類似程式語言裡的C語言。很多其它的python繪圖庫是基於matplotlib開發的,比如seaborn、ggplot、plotnine、holoviews、basemap等。matplotlib可用於python腳本、python shell、jupyter notebook、web等。
  • Python Matplotlib入門學習(一)
    首先我們需要了解啥是matplotlib。圖:matplotlib官網主頁Matplotlib:使用Python可視化「Matplotlib是一個綜合庫,用於在Python中創建靜態,動畫和交互式可視化。Matplotlib使簡單的事情變得容易而困難的事情變得可能。」這是他們的廣告語,不多說了我們進入正題。
  • python matplotlib畫圖教程學習:使用介紹
    本篇文章介紹matplotlib包使用時,需要掌握的一些基本概念。除了圖中顯示的紅藍線型圖和散點圖,matplotlib還能繪製柱形圖、燭型圖、餅圖、3D圖形等等各種個性化圖形,將在後續文章一一介紹。canvas對象一般不可見,通常無需直接操作該對象,matplotlib程序實際繪圖時需要調用該對象。Axes對象字面上理解,axes是數據軸axis的複數,但它並不是指數據軸,而是子圖對象。
  • 「繪圖,讓科學生動起來」:Python-matplotlib繪圖(專題一)python環境搭建篇
    專題一:做個行動派,安裝python及相關軟體——搭建python-matplotlib繪圖環境
  • PyCharm安裝matplotlib教程——安裝好matplotlib但是import報錯
    輸入python -m pip install -U pip setuptools2.輸入python -m pip install matplotlib3.檢查是否已經安裝成功。輸入python -m pip list成功安裝。默認安裝在D:\Python\Lib\site-packages方式二:通過下載matplotlib進行安裝。
  • 高效使用 Python 可視化工具 Matplotlib
    基本前提如果你除了本文之外沒有任何基礎,建議用以下幾個步驟學習如何使用matplotlib:學習基本的matplotlib術語,尤其是什麼是圖和坐標軸始終使用面向對象的接口,從一開始就養成使用它的習慣用基礎的pandas繪圖開始你的可視化學習用seaborn進行更複雜的統計可視化用matplotlib來定製
  • Python中使用matplotlib繪製灰度直方圖
    灰度直方圖在數據統計分析、圖像處理中有著比較廣泛的應用,下面就介紹一下如何在Python中使用matplotlib來繪製灰度直方圖。
  • Matplotlib入門詳細教程
    行文目錄結構,重點是右三分支matplotlib是python的一個繪圖庫,與numpy、pandas共享數據科學三劍客的美譽,也是很多高級可視化庫的基礎。matplomatplotlib不是python內置庫,調用前需手動安裝,且需依賴numpy庫。截至當前,matplotlib發行版本號為3.2.1,適配python3.6及以上版本。
  • Python數據可視化,無法繞過的matplotlib基礎知識!!!
    matplotlib是python優秀的數據可視化庫,python數據分析必備利器,本文專門為你整理了matplotlib詳細使用方法,來學習吧!--- 以下是正文 ---數據可視化非常重要,因為錯誤或不充分的數據表示方法可能會毀掉原本很出色的數據分析工作。
  • Python-matplotlib 學術柱狀圖繪製
    matplotlib繪製這種柱狀圖或者條形圖還是比較簡單的,主要涉及的知識點就是ax.bar()方法的應用,首先進行黑灰顏色柱狀圖的繪製,具體代碼如下:plt.rcParams['font.family'] = ['Times New Roman']fig,ax = plt.subplots(1,1,figsize=(7,4.5),dpi=200
  • 記錄matplotlib庫報錯及解決方法
    csdn解決方法一:重裝matplotlib庫pip uninstall matplotlibpip install matplotlib但是操作之後仍是報同樣錯誤。csdn解決方法二:在導入matplotlib庫後,且在matplotlib.pyplot庫被導入前加「matplotlib.use(『agg』)」語句。
  • Python模塊NumPy,Pandas,matplotlib的中文文檔
    今天比較忙所以不能寫長文了作為一名數據工程師需要熟練掌握python中的這些numpy,matplotlib,pandas,sklearn,seaborn,statsmodel.模塊但是由於這些模塊的文檔都是英文的可能一些英文不好的同學學起來會比較的困難,所以我從網上給大家找到一些中文的文檔
  • matplotlib中文顯示亂碼問題解決步驟
    找到配置文件matplotlibrc,用下面的代碼可以直接顯示:import matplotlibprint(matplotlib.matplotlib_fname())本人環境顯示為c:\python\python36\lib\site-packages\matplotlib\mpl-data\
  • Python 繪圖庫 Matplotlib 入門教程
    筆者推薦大家通過pip的方式進行安裝,具體方法如下:sudo pip3 install matplotlib本文的代碼在如下環境中測試:Apple OS X 10.13Python 3.6.3matplotlib 2.1.1numpy 1.13.3介紹
  • python matplotlib模塊
    導入模塊導入matplotlib的子模塊import matplotlib.pyplot as pltimport numpy as np2./api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figureimport numpy as np import matplotlib.pyplot as plt #新建figurefig = plt.figure()# 定義數據x = [1