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

2020-12-12 蟲蟲搜奇

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)

顯示效果為:

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

相關焦點

  • ​數據可視化 | 6個基本可視化Python庫
    數據可視化是使用可視元素(例如圖表,圖形等)表示數據的過程,有助於從數據中獲取有意義的見解。它旨在揭示數據背後的信息,並進一步幫助查看者查看數據中的結構。數據可視化將使任何人只要對數據科學的了解最少,即可獲得科學發現,並幫助人們輕鬆地交流信息。畢竟,一張圖片勝過千言萬語。在本文中我們將介紹一些Python支持的最出色的可視化庫。
  • 推薦: 一本「高顏值」的Python語言數據可視化圖書
    Rggplot2有兩本很經典的教程:ggplot2 Elegant Graphicsfor Data Analysis和R Graphics Cookbook,兩本書重點介紹了ggplot2包的繪圖語法及常見圖表的繪製方法。另外,《R語言數據可視化之美》基於R中的ggplot2包及其拓展包等,系統性地介紹了幾乎所有常見的二維和三維圖表的繪製方法。
  • Python數據可視化教程之基礎篇
    經過學習之後,我總結了利用python實現可視化的三個步驟:確定問題,選擇圖形轉換數據,應用函數參數設置,一目了然python中最基本的作圖庫就是matplotlib,是一個最基礎的Python可視化庫,一般都是從matplotlib上手Python數據可視化,
  • 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數據可視化—Seaborn
    今天為大家分享的小技巧是python的可視化畫圖庫Seaborn。相信很多小俠客用過matplotlib、pyecharts等可視化庫,可是為什麼還要介紹Seaborn呢?因為它修復了上述兩個庫的一些缺點,比如Seaborn提供了大量的高級接口和自定義主題,而matplotlib沒有這些接口使得很難確定哪些設置來自定義圖表。
  • 最受歡迎的 50 個數據可視化圖表
    本文總結了在數據分析和可視化中最有用的 50 個 Matplotlib 圖表。
  • 50 個數據可視化圖表
    本文總結了在數據分析和可視化中最有用的 50 個 Matplotlib 圖表。
  • Python的數據可視化:對比7種工具包
    在這篇文章中,我們將運用真實世界的數據,然後使用這些庫進行數據的可視化。當我們這樣做的時候,我們將發現,每個庫最適合用在哪裡,以及如何利用Python數據可視化系統最有效。探索數據集  在我們進行數據可視化之前,讓我們快速查看一下我們將要用到的數據集。我們將用到的據來自openflights。我們將用到 route,airport,和airline這三個數據。
  • Pandas可視化綜合指南:手把手從零教你繪製數據圖表
    曉查 編譯整理量子位 出品 | 公眾號 QbitAI數據可視化本來是一個非常複雜的過程,但隨著Pandas數據幀plot()函數的出現,使得創建可視化圖形變得很容易。最近,一位來自印度的小哥以2019年世界幸福指數的數據為例,詳細講述了在Pandas中plot()函數的各種參數設置的小技巧,熟練掌握這些技巧後,你也能繪製出豐富多彩的可視化圖表。
  • 【Python教程】用Python進行數據可視化
    當然如果你把這張圖表丟給別人,他們倒是也能看懂,但無法很直觀的理解其中的信息,而且這種形式的圖表看上去也比較 low,這個時候我們如果換成直觀又美觀的可視化圖形,不僅能突顯逼格,也能讓人更容易的看懂數據。
  • 數據可視化之旅:常用圖表對比
    本篇將通過一些來源於實際業務場景的數據集實例,來進行不同的可視化方案對比,從而總結出根據可視化目的、數據集特徵,去選擇圖表類型的一般套路。圖表對比部分,會選擇一些常見的,且比較容易混淆的圖表類型來做對比,以「可視化目標→數據集準備→圖表選擇和對比→經驗總結」的方式來行文。
  • 50個最有價值的數據可視化圖表(推薦收藏)
    本文總結了在數據分析和可視化中最有用的 50 個 Matplotlib 圖表。這些圖表列表允許您使用 python 的 matplotlib 和 seaborn 庫選擇要顯示的可視化對象。這些圖表根據可視化目標的 7 個不同情景進行分組。例如,如果要想像兩個變量之間的關係,請查看「關聯」部分下的圖表。
  • 數據可視化最有價值的50個圖表 | 網際網路數據資訊網-199IT | 中文...
    在數據分析和可視化中最有用的 50 個 Matplotlib 圖表。 這些圖表列表允許您使用 python 的 matplotlib 和 seaborn 庫選擇要顯示的可視化對象。這些圖表根據可視化目標的7個不同情景進行分組。 例如,如果要想像兩個變量之間的關係,請查看「關聯」部分下的圖表。
  • 中了數據可視化的毒:BBC如何使用R語言繪製數據圖表?
    過去一年裡,BBC 視覺與數據新聞(Visual and Data Journalism)團隊的數據記者已經從根本上改變了他們繪製發表在 BBC 新聞網站上的數據圖表的方式。我們將在這篇文章中介紹我們如何以及為何要使用 R 語言的 ggplot2 軟體包來創建可直接使用的圖表,我們也會給出我們的流程和代碼以及分享我們一路上所學到的東西。
  • Python的可視化工具概述
    另外一個需要考慮的電視,條形圖可能是製作圖標類型最簡單的一種.這些工具讓你能夠繪製更多類型的圖標.我的示例更注重於易格式化性而不是創新可視化例子,因為標籤,一些圖表佔用了很大空間,所以我削減了,只是為了保證文章的長度管理.最後我調整了圖像,因此任何模糊是縮放問題,並且不是實際輸出質量.
  • Python-plotnine 核密度空間插值可視化繪製
    還會繼續推出R-Python 的基礎圖表繪製推文系列。可能會根據粉絲的需求或者感興趣圖表進行專門的推文教程,大家可以給我發私信,我們會針對需求較多的圖表繪製要求進行專門推文。實現了中國地圖的繪製,也相應分享了繪圖數據(數據分享連結失效,本期會補上連結,文末有獲取方式)。
  • 想用Python做數據可視化?先邁過這個「坎」
    用過python的人都會面臨一個問題,尤其是初學者:我應該選哪個來實現數據可視化? 以下就是將要用來創建繪製數據的示例: ·Pandas ·Seaborn ·Ggplot 在示例中,我將使用pandas進行數據處理並使用它來完成可視化的效果。
  • 實例:用Python繪製一套「會跳舞」的動態圖形
    當然是將數據可視化啊,而且最好是動態可視化。本文將以線型圖、條形圖和餅圖為例,系統地講解如何讓你的數據圖表動起來。接觸過數據可視化的同學應該對 Python 裡的 Matplotlib 庫並不陌生。它是一個基於 Python 的開源數據繪圖包,僅需幾行代碼就可以幫助開發者生成直方圖、功率譜、條形圖、散點圖等。
  • 用數據可視化工具Seaborn繪製圖表
    Seaborn可以很好地處理數據幀,而Matplotlib則不行,它可以讓你以更簡單的方式繪製引人注目的圖表。為了更好地理解本文,你需要了解pandas和matplotlib的基礎知識。使用seaborn和Pokemon(口袋妖怪)數據集的屬性,我們將創建一些非常有趣的可視化效果。我們首先要看的是散點圖。散點圖散點圖使用點來表示不同數值變量的值。每個點在水平軸和垂直軸上的位置表示單個數據點的值。它們用於觀察變量之間的關係。
  • 50個最有價值的數據可視化圖表
    本文總結了在數據分析和可視化中最有用的 50 個 Matplotlib 圖表。