Python數據可視化實例之繪製圖表

2021-01-08 蟲蟲搜奇

Python數據可視化實例之繪製圖表

原創 蟲蟲安全 2018-09-05 17:41:57

得利於語言的簡單明了、豐富的數據結構、豐富的類和模塊,Python如今成了數據科學中的香餑餑,成了matlab、R語言之外又一強大的數據分析工具。拋開其他方面的、今天蟲蟲帶大家一起來探索Python在數據可視化方面的應用。我們以最基本的幾種圖標為實例來介紹Python matplotlib的強大的作圖能力。

1.折線圖

在繪製折線圖時,如果你的數據很小,圖表的線條有點折,當你數據集比較大時候,比如超過100個點,則會呈現相對平滑的曲線。

在這裡,我們使用三個plt.plot繪製了,不同斜率(1,2和3)的三條線。

import numpy as np

import matplotlib.pyplot as plt

cc= np.linspace(0,2,100)

plt.rcParams['font.sans-serif'] = ['SimHei']

plt.plot(cc,cc,label='linear')

plt.plot(cc,cc**2,label='兩倍')

plt.plot(cc,cc**3,label='三倍')

plt.xlabel('x label')

plt.ylabel('y label')

plt.title("折線圖")

plt.legend()

plt.show()

cc = np.linspace(0,2,100)

plt.plot(cc,cc,label ='linear')

plt.plot(cc,cc ** 2,label ='quadratic')

plt.plot(cc,cc ** 3,label ='cubic')

plt.xlabel('x label')

plt.ylabel('y label')

結果顯示,如下:

注意為了顯示中文,我們plt.rcParams屬性設置了中文字體,不然不能正確顯示中文title的。

2.散點圖

散點圖和折線圖的原理差不多;如果使用直線連接散點圖中的點,得到的就是折線圖。所以你只需要設置線型來繪製散點圖。

注意:次例中我們也畫了三行。不同的地方時,只使用了一個plt.plot。

import numpy as np

import matplotlib.pyplot as plt

x = np.arange(0., 5., 0.2)

plt.plot(x, x, 'r--', x, x**2, 'bs', x, x**3, 'g^')

plt.show()

圖表顯示結果為:

3.直方圖

直方圖也是一種常用的簡單圖表,本例中我們在同一張圖片中繪製兩個概率直方圖。

import numpy as np

import matplotlib.pyplot as plt

np.random.seed(19680801)

mu1, sigma1 = 100, 15

mu2, sigma2 = 80, 15

x1 = mu1 + sigma1 * np.random.randn(10000)

x2 = mu2 + sigma2 * np.random.randn(10000)

n1, bins1, patches1 = plt.hist(x1, 50, density=True, facecolor='g', alpha=1)

n2, bins2, patches2 = plt.hist(x2, 50, density=True, facecolor='r', alpha=0.2)

plt.rcParams['font.sans-serif'] = ['SimHei']

plt.xlabel('智商')

plt.ylabel('置信度')

plt.title('IQ直方圖')

plt.text(110, .025, r'$mu=100, sigma=15$')

plt.text(50, .025, r'$mu=80, sigma=15$')

# 設置坐標範圍

plt.axis([40, 160, 0, 0.03])

plt.grid(True)

plt.show()

顯示效果為:

4.條形圖

我們要介紹的第四種,圖表類型是條形圖,我們這兒引入稍微比較複雜的條形圖。

4.1平行條形圖

此例中,我們引入三組(a,b,c)5個隨機數(0~1),並用條形圖列印出來,做比較

import numpy as np

import matplotlib.pyplot as plt

size = 5

a = np.random.random(size)

b = np.random.random(size)

c = np.random.random(size)

x = np.arange(size)

total_width, n = 0.8, 3

width = total_width / n

# redraw the coordinates of x

x = x - (total_width - width) / 2

# here is the offset

plt.bar(x, a, width=width, label='a')

plt.bar(x + width, b, width=width, label='b')

plt.bar(x + 2 * width, c, width=width, label='c')

plt.legend()

plt.show()

顯示效果為:

4.2堆積條形圖

數據同上,不過條形plot的時候,用的相互的值大小差異(水平方向),而不是條柱平行對比。

import numpy as np

import matplotlib.pyplot as plt

size = 5

a = np.random.random(size)

b = np.random.random(size)

c = np.random.random(size)

x = np.arange(size)

plt.bar(x, a, width=0.5, label='a',fc='r')

plt.bar(x, b, bottom=a, width=0.5, label='b', fc='g')

plt.bar(x, c, bottom=a+b, width=0.5, label='c', fc='b')

plt.ylim(0, 2.5)

plt.legend()

plt.grid(True)

plt.show()

顯示效果為:

5.餅圖

餅圖是對比數量比例的最佳顯示方式。

5.1一般餅圖

ABCD四個數據,我們以餅圖方式顯示器大小對比。

import matplotlib.pyplot as plt

labels = 'A', 'B', 'C', 'D'

sizes = [15, 30, 45, 10]

explode = (0, 0.1, 0, 0)

plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',

shadow=True, startangle=90)

plt.axis('equal')

plt.show()

顯示效果為:

5.2嵌套餅圖

import numpy as np

import matplotlib.pyplot as plt

size = 0.3

vals = np.array([[60., 32.], [37., 40.], [29., 10.]])

cmap = plt.get_cmap("tab20c")

outer_colors = cmap(np.arange(3)*4)

inner_colors = cmap(np.array([1, 2, 5, 6, 9, 10]))

print(vals.sum(axis=1))

# [92. 77. 39.]

plt.pie(vals.sum(axis=1), radius=1, colors=outer_colors,

wedgeprops=dict(width=size, edgecolor='w'))

print(vals.flatten())

# [60. 32. 37. 40. 29. 10.]

plt.pie(vals.flatten(), radius=1-size, colors=inner_colors,

wedgeprops=dict(width=size, edgecolor='w'))

# equal makes it a perfect circle

plt.axis('equal')

plt.show()

顯示效果為:

5.3極軸餅圖

極軸餅圖是一種非常酷的圖表,讓我們看他的源碼:

import numpy as np

import matplotlib.pyplot as plt

np.random.seed(19680801)

N = 10

theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False)

radii = 10 * np.random.rand(N)

width = np.pi / 4 * np.random.rand(N)

ax = plt.subplot(111, projection='polar')

bars = ax.bar(theta, radii, width=width, bottom=0.0)

for r, bar in zip(radii, bars):

bar.set_facecolor(plt.cm.viridis(r / 10.))

bar.set_alpha(0.5)

plt.show()

顯示效果為:

6.3D圖表

3D圖表也是能我們展示出超想像力的視覺效果的圖表。

6.1三維散點圖

首先來看看三維的散點圖,源碼:

import numpy as np

import matplotlib.pyplot as plt

from 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()

顯示效果為:

6.2 3D平面圖

我們要用到mpl_toolkits.mplot3d這個3D模塊包,安裝這個包後,繪製一個超酷的3D圖只需兩行代碼:

from matplotlib import pyplot as plt

import numpy as np

from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()

ax = Axes3D(fig)

X = np.arange(-4, 4, 0.25)

Y = np.arange(-4, 4, 0.25)

X, Y = np.meshgrid(X, Y)

R = np.sqrt(X**2 + Y**2)

Z = np.sin(R)

顯示效果為:

怎麼樣,效果很酷把,好今天蟲蟲就給大家介紹到這裡,如果你有任何問題,或者需要本文提到的源碼包,請關注蟲蟲,給蟲蟲留言。

相關焦點

  • Python學習第89課-數據可視化之直方圖繪製
    【每天幾分鐘,從零入門python編程的世界!】假設你想投資某一個城市的房地產,你肯定需要對這個城市的人口分布、增長潛力做一個調查,這時我們就需要做一個直方圖(histogram plot)。實例:假設我們有一份C城市的人口年齡的數據,我們為方便起見,在這裡只列出很少的一部分數據,用一個列表City_C_Age表示這個城市的人口年齡數據:City_C_Age=[2,3,1,7,4,5,3,1,7,6,9,8,13,16,12,17,15,14,18,,20,23,28,25,23,27,25,29,26,24,25,30,34,37,36,38,32,35,37,36,41,42,47,47,48,43,46,44,53,54,58,52,51,55,56,69,60,63,67,64,72,74,78,75,89,85,83,90,93
  • 超硬核的 Python 數據可視化教程!
    Python實現可視化的三個步驟:確定問題,選擇圖形 轉換數據,應用函數 參數設置,一目了然 1、首先,要知道我們用哪些庫來畫圖?matplotlibpython中最基本的作圖庫就是matplotlib,是一個最基礎的Python可視化庫,一般都是從matplotlib上手Python數據可視化,然後開始做縱向與橫向拓展。
  • Pandas可視化綜合指南:手把手從零教你繪製數據圖表
    曉查 編譯整理量子位 出品 | 公眾號 QbitAI數據可視化本來是一個非常複雜的過程,但隨著Pandas數據幀plot()函數的出現,使得創建可視化圖形變得很容易。在數據幀上進行操作的plot()函數只是matplotlib中plt.plot()函數的一個簡單包裝 ,可以幫助你在繪圖過程中省去那些長長的matplotlib代碼。
  • 數據可視化最有價值的50個圖表 | 網際網路數據資訊網-199IT | 中文...
    在數據分析和可視化中最有用的 50 個 Matplotlib 圖表。 這些圖表列表允許您使用 python 的 matplotlib 和 seaborn 庫選擇要顯示的可視化對象。這些圖表根據可視化目標的7個不同情景進行分組。 例如,如果要想像兩個變量之間的關係,請查看「關聯」部分下的圖表。 或者,如果您想要顯示值如何隨時間變化,請查看「變化」部分,依此類推。
  • 可視化工具不知道怎麼選?深度評測5大Python數據可視化工具
    作者 | 劉早起來源 | 早起Python(ID: zaoqi-python)相信很多讀者學習Python就是希望作出各種酷炫的可視化圖表,當然你一定會聽說過Matplotlib、Pyecharts、Seaborn、Plotly、Bokeh這五大工具,本文就將通過真實繪圖來深度評測這五個Python數據可視化的庫,看看到底這幾種工具各有什麼優缺點
  • 數據科學的Python軟體包
    它可以與其他數據科學庫(例如NumPy和SciPy)一起使用,並繪製非常精確的二維圖形。它還帶有內置的面向對象的API,可以將圖表嵌入到應用程式中。Matplotlib的功能:使用各種預定義的方法可以輕鬆繪製各種推車。圖表的顏色和字體也可以使用各種功能進行自定義。它還提供了一個面向對象的API以與不同的應用程式集成。6.
  • 如何構建一個基於可視化理論的完美Python圖表?
    圖源:unsplash將數據轉換為可視化圖表是門學問。本文介紹了能從經典的《定量信息的視覺展示》(Edward Tufte)中學到的大部分知識,並向你展示以及如何在Python中實現它。信息展示的支柱圖表的完整性這代表演示的真實性。通過確保正確縮放坐標軸並反映趨勢,可以如實地解釋數據。從長遠來看,真實總是更有價值。每個人都至少目睹過一個帶有非線性y軸的圖,以使假設看起來更有說服力——請發誓永遠不會這樣做。圖表的卓越性這代表演示的質量。通過刪除多餘的形狀、分散的顏色和不一致的字體,可以更好地查看數據。
  • 數據可視化,職場數據分析都需要哪些常用的圖表?
    數據可視化是為了使得數據更高效的反應數據情況,便於讓讀者更高效閱讀,而不單是自己使用,通過數據可視化突出數據背後的規律,以此突出數據中的重要因素,並且,數據可視化可以將數據變得更加直觀。  使用圖表數據可視化的作用  使用圖表來展示數據主要有三個作用:  表達形象化:使用圖表可以化冗長為簡潔,化抽象為具體,化深奧為形象,使讀者或聽眾更容易理解主題和觀點。  突出重點:通過對圖表中數據的顏色和字體等信息的特別設置,可以把問題的重點有效地傳遞給讀者或聽眾。
  • Python 數據集探索與可視化實例指南
    字幕組雙語原文:Python 數據集探索與可視化實例指南英語原文:Explore and Visualize a Dataset with Python翻譯:AI研習社(Suen)在今天的文章中,您將學習:如何合併和整理數據,如何探索和分析數據,如何創建漂亮的圖形以可視化您的發現本文適用於誰:經常處理數據的人對Python和
  • Python學習第90課-數據可視化之散點圖繪製
    【每天幾分鐘,從零入門python編程的世界!】今天我們學習散點圖,在統計學或者機器學習方面,或者在金融風險控制方面,金融風險控制經常要看異常交易、信貸風險,做這樣的分析就要用到一個圖--散點圖(scatter plot)。
  • 數據可視化當中的圖表組合:比例面積圖
    編輯導讀:優秀的數據可視化依賴優異的設計,並非僅僅選擇正確的圖表模板那麼簡單,數據可視化可以幫助用戶更好地理解數據、運用數據。本文作者從自身經驗出發,結合具體案例分享了比例面積圖的不同組合形式,供大家一同參考學習。
  • Python語言中使用pyqtgraph庫實現數據可視化
    背景在Python程式語言中,matplotlib是一種常用的用於數據可視化的繪圖庫,它提供了一套和matlab相似的命令API,開發者可以僅需幾行代碼,便可生成如直方圖,功率譜,條形圖,錯誤圖,散點圖等圖形,適用於交互式繪圖,而且也可以方便地將它作為繪圖控制項嵌入到GUI應用程式中
  • Matplotlib繪製六種可視化圖表,值得收藏
    可視化圖表,有相當多種,但常見的也就下面幾種,其他比較複雜一點,大都也是基於如下幾種進行組合,變換出來的。對於初學者來說,很容易被這官網上眾多的圖表類型給嚇著了,由於種類太多,幾種圖表的繪製方法很有可能會混淆起來。
  • 數據可視化之旅(三):數據圖表的選擇(中)
    作者 | Destiny 來源 | 木東居士 0x00 前言數據圖表的選擇(上),分享了「時序數據」和「比例數據」的可視化圖表方案。不同的數據類型、不同的闡述目的,決定了數據可視化展現形式的差異。因此,今天這篇文章,主要是分享兩類不同的可視化目的及其可選擇的圖表形式。「對比型數據」:對比兩組或兩組以上數據的差異。
  • B端互動設計——數據可視化圖表
    在B端設計中,數據可視化是必不可少而且非常重要,越來越多的設計師需要和數據打交道,但是很多設計師不懂可視化當中不同用途的圖表規範,只是單純設計出好看的數據圖表,卻不能給用戶帶來更多的信息和價值。  因此掌握數據可視化能力是設計師必不可少的一個技能,然而目前國內網際網路對於數據的教學不夠全面,這讓很多B端的設計師很苦惱;所以今天我結合自己的工作經驗和大家分享一下——「數據可視化之圖表設計」,為大家梳理一套完整的數據可視化的框架,以及關於可視化設計的基本準則和規範。  幫助大家理解什麼樣的數據對應什麼樣的圖標,了解顏色的意義,知道數據排版的要點。
  • Python圖表繪製進擊,一文學會如何調整刻度範圍和刻度標籤
    熟悉Python的朋友,一定對matplotlib庫很熟悉了,作為Python經典的數據可視化庫,在Python繪圖中是很多人的首選,原因在於其功能強大的繪圖函數,最近咱們一直在聊matplotlib庫中與繪圖相關的函數,相信大家已經學會了很多函數的使用方法,已經能夠繪製自己所需的圖表,今天咱們再深度聊聊和
  • Python數據可視化之高速繪圖神器PyQtGraph庫,強烈建議收藏
    01為什麼使用PyQtGraph庫我們知道,在Python中,已經有了很多可供選擇的數據可視化庫。但是這些繪圖庫也存在著不足,即在圖形繪製速度上有所欠缺,特別是對於科研算法方面的數據可視化,很多情況需要實時繪圖,要求能夠提供儘可能快的繪製刷新速度,那這些庫顯的有些力不從心了。而我們下面要介紹的繪圖庫-PyQtGraph庫,則在繪圖速度方面表現尤其突出,在不失繪圖美觀、功能強大的前提下,在繪圖速度方面作了極大的優化,特別適合於實時數據採集的動態圖形繪製場合。
  • Python數據可視化:用Seaborn繪製高端玩家版散點圖
    散點圖是用於研究兩個變量之間關係的經典的和基本的圖表。如果數據中有多個組,則可能需要以不同顏色可視化每個組。  今天我們畫普通散點圖、邊際分布線性回歸散點圖、散點圖矩陣、帶線性回歸最佳擬合線的散點圖  本文示例多是來自官方文檔,這裡我只是做一下整理,讓大家知道散點圖的不同玩法,不要再繪製老掉牙的普通玩家版散點圖了。  普通玩家繪製的散點圖  在 matplotlib 中,可以使用 plt.scatterplot() 方便地執行此操作。
  • 數據工程師需要掌握的 18 個 Python 庫
    它運行時會直接實例化出一個瀏覽器,完全模擬用戶的操作,比如點擊連結、輸入表單,點擊按鈕提交等。所以我們使用它可以很方便的來登錄網站和爬取數據。可以使用 brew install selenium 的方式來快速安裝selenium。
  • 數據可視化圖表工具有哪些圖表類型?
    每到月度、季度、年度總結的時候,用到最多的、最有說服力的就是數據了。讓數據說話,擺事實、講道理才能贏得上級的肯定。 大家都聽過「數據可視化」,也知道要用直觀的圖表讓受眾理解複雜多變的數據。