導航:首頁 > 編程語言 > 利用python實現數據可視化

利用python實現數據可視化

發布時間:2023-01-27 06:52:57

python 數據可視化:Altair 使用全解析

ggplot2 是 R 的作圖工具包,可以使用非常簡單的語句實現非常復雜漂亮的效果。然而不幸的是,ggplot2 並不支持 Python。

在 Python 中,我們常使用 matplotlib 用於可視化圖形,matplotlib是一個很強大的可視化庫,但是它有著很嚴重的局限性。matplotlib 的使用非常靈活,這可以說的上是它的一個優點,但是當我們想為圖形加一個小小的功能的時候,它的繁瑣操作會讓我們舉步維艱。除此之外,matplotlib 的兩種界面(面向對象界面、基於狀態的界面)令人相當困惑,對於新手很不友好。即使對於多年使用 matplotlib 的人而言,他們也無法完全掌握這些操作。最後不得不說的是,用 matplotlib 製作互動式圖表是一件相當困難的事情。

Altair 是 Vega-Lite 的包裝器。Vega-Lite 是 JavaScript 的高級可視化庫,它最最重要的特點是,它的API是基於圖形語法的。

https://github.com/altair-viz/altair

什麼是圖形語法呢? 圖形語法聽起來有點像一個抽象的功能,值得注意的是,它是 Altair 和其他 Python 可視化庫之間最主要的區別。Altair 符合我們人類可視化數據的方式和習慣,Altair 只需要三個主要的參數:

基於以上三個參數,Altair 將會選擇合理的默認值來顯示我們的數據。

Altair 最讓人著迷的地方是,它能夠合理的選擇顏色。如果我們在 Encoding 中指定 變數類型為量化變數 ,那麼 Altair 將會使用連續的色標來著色(默認為 淺藍色-藍色-深藍色)。如果 變數類型指定為類別變數 ,那麼 Altair 會為每個類別賦予不同的顏色。(例如 紅色,黃色,藍色)

讓我們來看一個具體的例子,如下所示,我們組織了6個國家和它們所對應的人口數據,除此之外,還有相應的收入數據:

首先我們繪制每個國家的人口數據:

Ⅱ Python 數據可視化:地理信息可視化及擴展應用

在上一課中,我們已經介紹過使用 Plotly 實現地理信息可視化的方法。但是,那個工具對我們不是很友好,特別是由於某種不可抗力的存在,可能根本無法調試。

不過,pyecharts 的確在地理信息可視化上做得不錯——如果僅做國內地圖,特別推薦使用,還是通過示例來說明吧。

首先,要安裝地圖文件,安裝方法如下:

不僅可以安裝上述官方提供的地圖文件,還能夠自己製作個性化的地圖擴展, 具體請點擊這里參閱 。

有了上述基礎,就可以進行地理信息可視化了(以下示例的數據源, 請點擊這里查看 )。

實現上述效果的類是 Geo,默認情況下繪制散點圖,此外可以實現 type='effectScatter'(閃耀的散點圖)和 type='heatmap'(熱圖)。

此圖也是動態交互的,通過左側圖例選擇不同數值范圍,相應地會顯示該范圍內的數據。

如果按照前面所述安裝了各種地圖文件,還可以在 geo.add 方法中規定地理范圍。

在 pyecharts 地圖中認可的城市名稱都如同上述結果顯示的那樣,例如「阜新」,不要寫成「阜新市」。

下面就繪制江蘇省的空氣質量分布圖。

輸出結果:

這里的 geo.add 參數與前面的不同,導致了展示效果的差異。

一直以來,房價都是人們關注的話題,下面就用可視化的方式研究一下近十年(2009—2018 年)全國部分城市平均房價(數據源: https://github.com/qiwsir/DataSet/tree/master/house )。

輸出結果:

在熱圖查看房價的基礎上,為了更准確查看某些城市的房價走向,可以使用折線圖看看趨勢,例如下列幾個城市。

Ⅲ python數據可視化--可視化概述

數據可視化是python最常見的應用領域之一,數據可視化是藉助圖形化的手段將一組數據以圖形的形式表達出來,並利用數據分析和開發工具發現其中未知信息的數據處理過程。

在學術界有一句話廣為流傳,A picture worths thousand words,就是一圖值千言。在課堂上,我經常舉的例子就是大家在刷朋友圈的時候如果看到有人轉發一篇題目很吸引人的文章時,我們都會點擊進去,可能前幾段話會很認真地看,文章很長的時候後面就會一目十行,失去閱讀的興趣。

所以將數據、表格和文字等內容用圖表的形式表達出來,既能提高讀者閱讀的興趣,還能直觀表達想要表達的內容。

python可視化庫有很多,下面列舉幾個最常用的介紹一下。

matplotlib

它是python眾多數據可視化庫的鼻祖,也是最基礎的底層數據可視化第三方庫,語言風格簡單、易懂,特別適合初學者入門學習。

seaborn

Seaborn是在matplotlib的基礎上進行了更高級的API封裝,從而使得作圖更加容易,在大多數情況下使用seaborn能做出很具有吸引力的圖,而使用matplotlib就能製作具有更多特色的圖。應該把Seaborn視為matplotlib的補充,而不是替代物。

pyecharts

pyecharts是一款將python與echarts結合的強大的數據可視化工具,生成的圖表精巧,交互性良好,可輕松集成至 Flask,Sanic,Django 等主流 Web 框架,得到眾多開發者的認可。

bokeh

bokeh是一個面向web瀏覽器的互動式可視化庫,它提供了多功能圖形的優雅、簡潔的構造,並在大型數據集或流式數據集上提供高性能的交互性。

python這些可視化庫可以便捷、高效地生成豐富多彩的圖表,下面列舉一些常見的圖表。

柱形圖

條形圖

坡度圖

南丁格爾玫瑰圖

雷達圖

詞雲圖

散點圖

等高線圖

瀑布圖

相關系數圖

散點曲線圖

直方圖

箱形圖

核密度估計圖

折線圖

面積圖

日歷圖

餅圖

圓環圖

馬賽克圖

華夫餅圖

還有地理空間型等其它圖表,就不一一列舉了,下節開始我們先學習matplotlib這個最常用的可視化庫。

Ⅳ Python 數據可視化:數據分布統計圖和熱圖

本課將繼續介紹 Seaborn 中的統計圖。一定要牢記,Seaborn 是對 Matplotlib 的高級封裝,它優化了很多古老的做圖過程,因此才會看到一個函數解決問題的局面。

在統計學中,研究數據的分布情況,也是一個重要的工作,比如某些數據是否為正態分布——某些機器學習模型很在意數據的分布情況。

在 Matplotlib 中,可以通過繪制直方圖將數據的分布情況可視化。在 Seaborn 中,也提供了繪制直方圖的函數。

輸出結果:

sns.distplot 函數即實現了直方圖,還順帶把曲線畫出來了——曲線其實代表了 KDE。

除了 sns.distplot 之外,在 Seaborn 中還有另外一個常用的繪制數據分布的函數 sns.kdeplot,它們的使用方法類似。

首先看這樣一個示例。

輸出結果:

① 的作用是設置所得圖示的背景顏色,這樣做的目的是讓下面的 ② 繪制的圖像顯示更清晰,如果不設置 ①,在顯示的圖示中看到的就是白底圖像,有的部分看不出來。

② 最終得到的是坐標網格,而且在圖中分為三部分,如下圖所示。

相對於以往的坐標網格,多出了 B 和 C 兩個部分。也就是說,不僅可以在 A 部分繪制某種統計圖,在 B 和 C 部分也可以繪制。

繼續操作:

輸出結果:

語句 ③ 實現了在坐標網格中繪制統計圖的效果,jp.plot 方法以兩個繪圖函數為參數,分別在 A 部分繪制了回歸統計圖,在 B 和 C 部分繪制了直方圖,而且直方圖分別表示了對應坐標軸數據的分布,即:

我們把有語句 ② 和 ③ 共同實現的統計圖,稱為聯合統計圖。除了用 ② ③ 兩句可以繪制這種圖之外,還有一個函數也能夠「兩步並作一步」,具體如下:

輸出結果:

Ⅳ 利用Python實現卷積神經網路的可視化

在本文中,將探討如何可視化卷積神經網路(CNN),該網路在計算機視覺中使用最為廣泛。首先了解CNN模型可視化的重要性,其次介紹可視化的幾種方法,同時以一個用例幫助讀者更好地理解模型可視化這一概念。

正如上文中介紹的癌症腫瘤診斷案例所看到的,研究人員需要對所設計模型的工作原理及其功能掌握清楚,這點至關重要。一般而言,一名深度學習研究者應該記住以下幾點:

1.1 理解模型是如何工作的

1.2 調整模型的參數

1.3 找出模型失敗的原因

1.4 向消費者/終端用戶或業務主管解釋模型做出的決定

2.可視化CNN模型的方法

根據其內部的工作原理,大體上可以將CNN可視化方法分為以下三類:

初步方法:一種顯示訓練模型整體結構的簡單方法

基於激活的方法:對單個或一組神經元的激活狀態進行破譯以了解其工作過程

基於梯度的方法:在訓練過程中操作前向傳播和後向傳播形成的梯度

下面將具體介紹以上三種方法,所舉例子是使用Keras深度學習庫實現,另外本文使用的數據集是由「識別數字」競賽提供。因此,讀者想復現文中案例時,請確保安裝好Kears以及執行了這些步驟。

研究者能做的最簡單的事情就是繪制出模型結構圖,此外還可以標注神經網路中每層的形狀及參數。在keras中,可以使用如下命令完成模型結構圖的繪制:

model.summary()_________________________________________________________________Layer (type)                 Output Shape              Param #  

=================================================================conv2d_1 (Conv2D)            (None, 26, 26, 32)        320_________________________________________________________________conv2d_2 (Conv2D)            (None, 24, 24, 64)        18496_________________________________________________________________max_pooling2d_1 (MaxPooling2 (None, 12, 12, 64)        0_________________________________________________________________dropout_1 (Dropout)          (None, 12, 12, 64)        0_________________________________________________________________flatten_1 (Flatten)          (None, 9216)              0_________________________________________________________________dense_1 (Dense)              (None, 128)               1179776_________________________________________________________________dropout_2 (Dropout)          (None, 128)               0_________________________________________________________________preds (Dense)                (None, 10)                1290      

=================================================================Total params: 1,199,882Trainable params: 1,199,882Non-trainable params: 0

還可以用一個更富有創造力和表現力的方式呈現模型結構框圖,可以使用keras.utils.vis_utils函數完成模型體系結構圖的繪制。

另一種方法是繪制訓練模型的過濾器,這樣就可以了解這些過濾器的表現形式。例如,第一層的第一個過濾器看起來像:

top_layer = model.layers[0]plt.imshow(top_layer.get_weights()[0][:, :, :, 0].squeeze(), cmap='gray')

一般來說,神經網路的底層主要是作為邊緣檢測器,當層數變深時,過濾器能夠捕捉更加抽象的概念,比如人臉等。

為了理解神經網路的工作過程,可以在輸入圖像上應用過濾器,然後繪制其卷積後的輸出,這使得我們能夠理解一個過濾器其特定的激活模式是什麼。比如,下圖是一個人臉過濾器,當輸入圖像是人臉圖像時候,它就會被激活。

from vis.visualization import visualize_activation

from vis.utils import utils

from keras import activations

from matplotlib import pyplot as plt

%matplotlib inline

plt.rcParams['figure.figsize'] = (18, 6)

# Utility to search for layer index by name.

# Alternatively we can specify this as -1 since it corresponds to the last layer.

layer_idx = utils.find_layer_idx(model, 'preds')

# Swap softmax with linear

model.layers[layer_idx].activation = activations.linear

model = utils.apply_modifications(model)

# This is the output node we want to maximize.filter_idx = 0

img = visualize_activation(model, layer_idx, filter_indices=filter_idx)

plt.imshow(img[..., 0])

同理,可以將這個想法應用於所有的類別,並檢查它們的模式會是什麼樣子。

for output_idx in np.arange(10):

  # Lets turn off verbose output this time to avoid clutter and just see the output.

  img = visualize_activation(model, layer_idx, filter_indices=output_idx, input_range=(0., 1.))

  plt.figure()

  plt.title('Networks perception of {}'.format(output_idx))

  plt.imshow(img[..., 0])

在圖像分類問題中,可能會遇到目標物體被遮擋,有時候只有物體的一小部分可見的情況。基於圖像遮擋的方法是通過一個灰色正方形系統地輸入圖像的不同部分並監視分類器的輸出。這些例子清楚地表明模型在場景中定位對象時,若對象被遮擋,其分類正確的概率顯著降低。

為了理解這一概念,可以從數據集中隨機抽取圖像,並嘗試繪制該圖的熱圖(heatmap)。這使得我們直觀地了解圖像的哪些部分對於該模型而言的重要性,以便對實際類別進行明確的區分。

def iter_occlusion(image, size=8):

    # taken from https://www.kaggle.com/blargl/simple-occlusion-and-saliency-maps

  occlusion = np.full((size * 5, size * 5, 1), [0.5], np.float32)

  occlusion_center = np.full((size, size, 1), [0.5], np.float32)

  occlusion_padding = size * 2

  # print('padding...')

  image_padded = np.pad(image, ( \  (occlusion_padding, occlusion_padding), (occlusion_padding, occlusion_padding), (0, 0) \  ), 'constant', constant_values = 0.0)

  for y in range(occlusion_padding, image.shape[0] + occlusion_padding, size):

      for x in range(occlusion_padding, image.shape[1] + occlusion_padding, size):

          tmp = image_padded.()

          tmp[y - occlusion_padding:y + occlusion_center.shape[0] + occlusion_padding, \

            x - occlusion_padding:x + occlusion_center.shape[1] + occlusion_padding] \            = occlusion

          tmp[y:y + occlusion_center.shape[0], x:x + occlusion_center.shape[1]] = occlusion_center          yield x - occlusion_padding, y - occlusion_padding, \

            tmp[occlusion_padding:tmp.shape[0] - occlusion_padding, occlusion_padding:tmp.shape[1] - occlusion_padding]i = 23 # for exampledata = val_x[i]correct_class = np.argmax(val_y[i])

# input tensor for model.predictinp = data.reshape(1, 28, 28, 1)# image data for matplotlib's imshowimg = data.reshape(28, 28)

# occlusionimg_size = img.shape[0]

occlusion_size = 4print('occluding...')heatmap = np.zeros((img_size, img_size), np.float32)class_pixels = np.zeros((img_size, img_size), np.int16)

from collections import defaultdict

counters = defaultdict(int)for n, (x, y, img_float) in enumerate(iter_occlusion(data, size=occlusion_size)):

    X = img_float.reshape(1, 28, 28, 1)

    out = model.predict(X)

    #print('#{}: {} @ {} (correct class: {})'.format(n, np.argmax(out), np.amax(out), out[0][correct_class]))

    #print('x {} - {} | y {} - {}'.format(x, x + occlusion_size, y, y + occlusion_size))

    heatmap[y:y + occlusion_size, x:x + occlusion_size] = out[0][correct_class]

    class_pixels[y:y + occlusion_size, x:x + occlusion_size] = np.argmax(out)

    counters[np.argmax(out)] += 1

正如之前的坦克案例中看到的那樣,怎麼才能知道模型側重於哪部分的預測呢?為此,可以使用顯著圖解決這個問題。顯著圖首先在這篇文章中被介紹。

使用顯著圖的概念相當直接——計算輸出類別相對於輸入圖像的梯度。這應該告訴我們輸出類別值對於輸入圖像像素中的微小變化是怎樣變化的。梯度中的所有正值告訴我們,像素的一個小變化會增加輸出值。因此,將這些梯度可視化可以提供一些直觀的信息,這種方法突出了對輸出貢獻最大的顯著圖像區域。

class_idx = 0indices = np.where(val_y[:, class_idx] == 1.)[0]

# pick some random input from here.idx = indices[0]

# Lets sanity check the picked image.from matplotlib import pyplot as plt%matplotlib inline

plt.rcParams['figure.figsize'] = (18, 6)plt.imshow(val_x[idx][..., 0])

from vis.visualization import visualize_saliency

from vis.utils import utilsfrom keras import activations# Utility to search for layer index by name.

# Alternatively we can specify this as -1 since it corresponds to the last layer.

layer_idx = utils.find_layer_idx(model, 'preds')

# Swap softmax with linearmodel.layers[layer_idx].activation = activations.linear

model = utils.apply_modifications(model)grads = visualize_saliency(model, layer_idx, filter_indices=class_idx, seed_input=val_x[idx])

# Plot with 'jet' colormap to visualize as a heatmap.plt.imshow(grads, cmap='jet')

# This corresponds to the Dense linear layer.for class_idx in np.arange(10):

    indices = np.where(val_y[:, class_idx] == 1.)[0]

    idx = indices[0]

    f, ax = plt.subplots(1, 4)

    ax[0].imshow(val_x[idx][..., 0])

    for i, modifier in enumerate([None, 'guided', 'relu']):

        grads = visualize_saliency(model, layer_idx, filter_indices=class_idx,

        seed_input=val_x[idx], backprop_modifier=modifier)

        if modifier is None:

            modifier = 'vanilla'

        ax[i+1].set_title(modifier)

        ax[i+1].imshow(grads, cmap='jet')

類別激活映射(CAM)或grad-CAM是另外一種可視化模型的方法,這種方法使用的不是梯度的輸出值,而是使用倒數第二個卷積層的輸出,這樣做是為了利用存儲在倒數第二層的空間信息。

from vis.visualization import visualize_cam

# This corresponds to the Dense linear layer.for class_idx in np.arange(10):

indices = np.where(val_y[:, class_idx] == 1.)[0]

idx = indices[0]f, ax = plt.subplots(1, 4)

ax[0].imshow(val_x[idx][..., 0])

for i, modifier in enumerate([None, 'guided', 'relu']):

    grads = visualize_cam(model, layer_idx, filter_indices=class_idx,

    seed_input=val_x[idx], backprop_modifier=modifier)

    if modifier is None:

        modifier = 'vanilla'

    ax[i+1].set_title(modifier)

    ax[i+1].imshow(grads, cmap='jet')

本文簡單說明了CNN模型可視化的重要性,以及介紹了一些可視化CNN網路模型的方法,希望對讀者有所幫助,使其能夠在後續深度學習應用中構建更好的模型。 免費視頻教程:www.mlxs.top

Ⅵ Python中數據可視化經典庫有哪些

Python有很多經典的數據可視化庫,比較經典的數據可視化庫有下面幾個。

matplotlib

是Python編程語言及其數值數學擴展包 NumPy 的可視化操作界面。它利用通用的圖形用戶界面工具包,如 Tkinter, wxPython, Qt 或 GTK+,向應用程序嵌入式繪圖提供了應用程序介面。

pyplot 是 matplotlib 的一個模塊,它提供了一個類似 MATLAB 的介面。 matplotlib 被設計得用起來像 MATLAB,具有使用 Python 的能力。

優點:繪圖質量高,可繪制出版物質量級別的圖形。代碼夠簡單,易於理解和擴展,使繪圖變得輕松,通過Matplotlib可以很輕松地畫一些或簡單或復雜的圖形,幾行代碼即可生成直方圖、條形圖、散點圖、密度圖等等,最重要的是免費和開源。

優點:用於創建、操縱和研究復雜網路的結構、以及學習復雜網路的結構、功能及其動力學。

上面是我的回答,希望對您有所幫助!

Ⅶ 114 11 個案例掌握 Python 數據可視化--美國氣候研究

自哥本哈根氣候會議之後,全球日益關注氣候變化和溫室效應等問題,並於會後建立了全球碳交易市場,分階段分批次減碳。本實驗獲取了美國 1979 - 2011 年間 NASA 等機構對美國各地日均最高氣溫、降雨量等數據,研究及可視化了氣候相關指標的變化規律及相互關系。
輸入並執行魔法命令 %matplotlib inline, 並去除圖例邊框。

數據集介紹:
本數據集特徵包括美國 49 個州(State),各州所在的地區(Region),統計年(Year),統計月(Month),平均光照(Avg Daily Sunlight),日均最大空氣溫度(Avg Daily Max Air Temperature ),日均最大熱指數(Avg Daily Max Heat Index ),日均降雨量(Avg Daily Precipitation ),日均地表溫度(Avg Day Land Surface Temperature)。
各特徵的年度區間為:

導入數據並查看前 5 行。

篩選美國各大區域的主要氣候指數,通過 sns.distplot 介面繪制指數的分布圖。

從運行結果可知:
光照能量密度(Sunlight),美國全境各地區分布趨勢大致相同,均存在較為明顯的兩個峰(強光照和弱光照)。這是因為非赤道國家受地球公轉影響,四季光照強度會呈現出一定的周期變化規律;
從地理區位能看出,東北部光照低谷明顯低於其他三個區域;
日均最高空氣溫度(Max Air Temperature),美國全境各地區表現出較大差異,東北部和中西部趨勢大致相同,氣溫平緩期較長,且包含一個顯著的尖峰;西部地區平緩期最長,全年最高溫均相對穩定;南部分布則相對更為集中;
日均地表溫度(Land Surface Temperature),與最高空氣溫度類似,不同之處在於其低溫區分布更少;
最大熱指數(Max Heat Index),西部與中西部分布較為一致,偏溫和性溫度,東北部熱指數偏高,南部偏低;
降雨量(Precipitation),西部明顯偏小,南部與東北部大致相同,中西部相對較多。

結合地理知識做一個總結:
東北部及大多數中西部地區,屬於溫帶大陸性氣候,四季分明,夏季悶熱,降雨較多。
西部屬於溫帶地中海氣候,全年氣候溫和,並且乾燥少雨,夏季氣候溫和,最高溫度相對穩定。
南部沿海一帶,終年氣候溫暖,夏季炎熱,雨水充沛。

按月計算美國各地區降雨量均值及標准偏差,以均值 ± 一倍標准偏差繪制各地區降雨量誤差線圖。

從運行結果可知:
在大多數夏季月份,西部地區降雨量遠小於其他地區;
西部地區冬季月降雨量高於夏季月;
中西部地區是較為典型的溫帶大陸性氣候,秋冬降雨逐漸減少,春夏降雨逐漸升高;
南部地區偏向海洋性氣候,全年降雨量相對平均。

需要安裝joypy包。

日均最高氣溫變化趨勢
通過 joypy 包的 joyplot 介面,可以繪制帶堆積效應的直方分布曲線,將 1980 年 - 2008 年的日均最高溫度按每隔 4 年的方式繪制其分布圖,並標注 25%、75% 分位數。

從運行結果可知:
1980 - 2008 年區間,美國全境日均最高溫度分布的低溫區正逐漸升高,同時高溫區正逐漸降低,分布更趨向於集中;
1980 - 2008 年區間,美國全境日均最高溫度的 25% 分位數和 75% 分位數有少量偏離但並不明顯。
日均降雨量變化趨勢
同樣的方式對降雨量數據進行處理並查看輸出結果。

篩選出加州和紐約州的日均降雨量數據,通過 plt.hist 介面繪制降雨量各月的分布圖。

從運行結果可知:
加州地區降雨量多集中在 0 - 1 mm 區間,很少出現大雨,相比而言,紐約州則顯得雨量充沛,日均降雨量分布在 2 - 4 mm 區間。

直方圖在堆積效應下會被覆蓋大多數細節,同時表達聚合、離散效應的箱線圖在此類問題上或許是更好的選擇。
通過 sns.boxplot 介面繪制加州和紐約州全年各月降雨量分布箱線圖.

從箱線圖上,我們可以清晰地對比每個月兩個州的降雨量分布,既可以看到集中程度,例如七月的加州降雨量集中在 0.1 - 0.5 mm 的窄區間,說明此時很少會有大雨;又可以看到離散情況,例如一月的加州,箱線圖箱子(box)部分分布較寬,且上方 10 mm 左右存在一個離散點,說明此時的加州可能偶爾地會出現大到暴雨。

視覺上更為美觀且簡約的是擺動的誤差線圖,實驗 「美國全境降雨量月度分布」 將所有類別標簽的 x 位置均放於同一處,導致誤差線高度重合。可通過調節 x 坐標位置將需要對比的序列緊湊排布。

從輸出結果可以看出,加州冬季的降雨量不確定更強,每年的的十一月至次年的三月,存在降雨量大,且降雨量存在忽多忽少的現象(誤差線長)。

上面的實驗均在研究單變數的分布,但經常性地,我們希望知道任意兩個變數的聯合分布有怎樣的特徵。
核密度估計 , 是研究此類問題的主要方式之一, sns.kdeplot 介面通過高斯核函數計算兩變數的核密度函數並以等高線的形式繪制核密度。

從運行結果可知:
加州在高溫區和低降雨期存在一個較為明顯的高密度分布區(高溫少雨的夏季);
紐約州在高溫及低溫區均存在一個高密度的分布區,且在不同溫區降雨量分布都較為均勻。

將美國全境的降雨量與空氣溫度通過 plt.hist2d 介面可視化。

從運行結果可知:
美國全境最高密度的日均高溫溫度區域和降雨量區間分別為,78 F (約等於 25 C)和 2.2 mm 左右,屬於相對舒適的生活氣候區間。
美國全境降雨量與空氣溫度的關系-核密度估計
在上面實驗基礎上,在 x, y 軸上分別通過 sns.rugplot 介面繪制核密度估計的一維分布圖,可在一張繪圖平面上同時獲取聯合分布和單變數分布的特徵。

美國全境降雨量與空氣溫度的關系-散點分布和直方分布
sns.jointplot 介面通過柵格的形式,將單變數分布用子圖的形式進行分別繪制,同時通過散點圖進行雙變數關系的展示,也是一種較好的展現數據分布的方式。

上面兩個實驗研究了雙變數分布的可視化,以下研究 3 變數聚合結果的可視化。
通過 sns.heatmap 介面可實現對透視數據的可視化,其原理是對透視結果的值賦予不同的顏色塊,以可視化其值的大小,並通過顏色條工具量化其值大小。

上面的兩個實驗可視化了各州隨年份日均最高溫度的中位數變化趨勢,從圖中並未看出有較為顯著地變化。
以下通過 t 檢驗的方式查看統計量是否有顯著性差異。stats.ttest_ind 介面可以輸出 1980 年 與 2010 年主要氣候指數的顯著性檢驗統計量及 p 值。

從運行結果可以看出:
檢驗結果拒絕了降雨量相等的原假設,即 1980 年 與 2010 年兩年間,美國降雨量是不同的,同時沒有拒絕日均日照、日均最大氣溫兩個變數相等的原假設,說明氣溫未發生顯著性變化。

Ⅷ Python中除了matplotlib外還有哪些數據可視化的庫

數據可視化是展示數據、理解數據的有效手段,常用的Python數據可視化庫如下:
1.Matplotlib:第一個Python可視化庫,有許多別的程序庫都是建立在其基礎上或者直接調用該庫,可以很方便地得到數據的大致信息,功能非常強大,但也非常復雜。
2.Seaborn:利用Matplotlib,用簡潔的代碼來製作好看的圖表,與Matplotlib最大的區別為默認繪圖風格和色彩搭配都具有現代美感。
3.ggplot:基於R的一個作圖庫的ggplot2,同時利用了源於《圖像語法》中的概念,允許疊加不同的圖層來完成一幅圖,並不適用於製作非常個性化的圖像,為操作的簡潔度而犧牲了圖像的復雜度。
4.Bokeh:與ggplot很相似,但與ggplot不同之處為它完全基於Python而不是從R處引用。長處在於能用於製作可交互、可直接用於網路的圖表。圖表可以輸出為JSON對象、HTML文檔或者可交互的網路應用。
5.Plotly:可以通過Python notebook使用,與bokeh一樣致力於交互圖表的製作,但提供在別的庫中幾乎沒有的幾種圖表類型,如等值線圖、樹形圖和三維圖表。
6.pygal:與Bokeh和Plotly一樣,提供可直接嵌入網路瀏覽器的可交互圖像。與其他兩者的主要區別在於可將圖表輸出為SVG格式,所有的圖表都被封裝成方法,且默認的風格也很漂亮,用幾行代碼就可以很容易地製作出漂亮的圖表。
7.geoplotlib:用於製作地圖和地理相關數據的工具箱。可用來製作多種地圖,比如等值區域圖、熱度圖、點密度圖等,必須安裝Pyglet方可使用。
8.missingno:用圖像的方式快速評估數據缺失的情況,可根據數據的完整度對數據進行排序或過濾,或者根據熱度圖或樹狀圖對數據進行修正。

閱讀全文

與利用python實現數據可視化相關的資料

熱點內容
安卓如何重壓開槍 瀏覽:377
航天時代飛鵬圖像處理演算法 瀏覽:521
php比較兩個文件 瀏覽:737
加密貨幣市場活躍 瀏覽:334
最便宜的雲盤伺服器架設傳奇 瀏覽:790
java反向工程 瀏覽:110
pdf文檔轉換excel 瀏覽:8
主角叫楚天的都市小說 瀏覽:754
程序員三重境界 瀏覽:871
菜雞方舟上怎麼開伺服器 瀏覽:727
馬林固件編譯錯誤 瀏覽:910
市場營銷案例pdf 瀏覽:770
魔爪閱讀網 瀏覽:19
app地推業績統計在哪裡 瀏覽:993
維語電影網站大全 瀏覽:958
程序員骨腫瘤上熱搜 瀏覽:847
聚優電影 瀏覽:45
國企保底工資演算法 瀏覽:730
視聽說伺服器地址是什麼意思 瀏覽:657
一部男主叫大志的電影叫 瀏覽:650