最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python數(shù)據(jù)可視化教程之Matplotlib實現(xiàn)各種圖表實例

 更新時間:2019年01月13日 16:44:55   作者:summer哥  
這篇文章主要給大家介紹了關于Python數(shù)據(jù)可視化教程之利用Matplotlib實現(xiàn)各種圖表的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧

前言

數(shù)據(jù)分析就是將數(shù)據(jù)以各種圖表的形式展現(xiàn)給領導,供領導做決策用,因此熟練掌握餅圖、柱狀圖、線圖等圖表制作是一個數(shù)據(jù)分析師必備的技能。Python有兩個比較出色的圖表制作框架,分別是Matplotlib和Pyechart。本文主要講述使用Matplotlib制作各種數(shù)據(jù)圖表。

Matplotlib是最流行的用于繪制2D數(shù)據(jù)圖表的Python庫,能夠在各種平臺上使用,可以繪制散點圖、柱狀圖、餅圖等。

1、柱狀圖

是一種以長方形或長方體的高度為變量的表達圖形的統(tǒng)計報告圖,由一系列高度不等的縱向條紋表示數(shù)據(jù)分布的情況,用來比較兩個或以上的價值(不同時間或者不同條件),只有一個變量,通常利用于較小的數(shù)據(jù)集分析。柱狀圖可以用來比較數(shù)據(jù)之間的多少,可以用來觀察某一事件的變化趨勢,柱狀圖亦可橫向排列,或用多維方式表達。

實現(xiàn)代碼:

# 導入繪圖模塊
import matplotlib.pyplot as plt
# 構(gòu)建數(shù)據(jù)
sales = [7125,12753,13143,8635]

# 中文亂碼的處理,rcParams也可以用于設置圖的分辨率,大小等信息
plt.rcParams['font.sans-serif'] =['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 繪圖,第一個參數(shù)是x軸的數(shù)據(jù),第二個參數(shù)是y軸的數(shù)據(jù),第三個參數(shù)是柱子的大小,默認值是1(值在0到1之間),color是柱子的顏色,alpha是柱子的透明度
plt.bar(range(4), sales, 0.4,color='r', alpha = 0.8)
# 添加軸標簽
plt.ylabel('銷量')
# 添加標題
plt.title('水果2018年度銷量')
# 添加刻度標簽
plt.xticks(range(4),['蘋果','香蕉','梨','獼猴桃'])
# 設置Y軸的刻度范圍
plt.ylim([5000,15000])

# 為每個條形圖添加數(shù)值標簽
for x,y in enumerate(sales):
 plt.text(x,y+100,'%s' %y,ha='center')

# 顯示圖形
plt.show()

效果圖:

只需繪制柱狀圖的函數(shù)bar()改成barh()就可以將柱狀圖長方形或長方體從垂直方向變?yōu)樗椒较颉?br />

實現(xiàn)代碼:

# 導入繪圖模塊
import matplotlib.pyplot as plt
# 構(gòu)建數(shù)據(jù)
sales = [7125,12753,13143,8635]

# 中文亂碼的處理
plt.rcParams['font.sans-serif'] =['SimHei']
plt.rcParams['axes.unicode_minus'] = False

x = ['蘋果','香蕉','梨','獼猴桃']
# 繪圖
plt.barh(range(4), sales, 0.4,color='r', alpha = 0.8)
# 添加軸標簽
plt.ylabel('銷量')
# 添加標題
plt.title('水果2018年度銷量')
# 添加刻度標簽
plt.yticks(range(4),['蘋果','香蕉','梨','獼猴桃'])
# 設置Y軸的刻度范圍
plt.xlim([5000,15000])

# 為每個條形圖添加數(shù)值標簽
for x,y in enumerate(sales):
 plt.text(y+0.2,x,'%s' %y,va='center')

# 顯示圖形
plt.show()

效果圖:


除了bar()函數(shù)變成barh()之外。還有其他幾個地方要做修改,在給每個條形圖添加數(shù)值標簽時,將ha='center'改為va='center',將添加x軸標簽的方法從xlabel改為ylabel。

柱狀圖和折線圖混合使用

柱狀圖可以和折線圖混合使用,用來表示某一個數(shù)據(jù)的變化趨勢,下面是例子的柱狀圖表示水果的年度銷量,折線圖表示水果1月份的銷量。

代碼:

# 導入繪圖模塊
import matplotlib.pyplot as plt

jan_sales = [3010,4029,5021,3056]
# 構(gòu)建數(shù)據(jù)
sales = [7125,12753,13143,8635]


# 中文亂碼的處理
plt.rcParams['font.sans-serif'] =['SimHei']
plt.rcParams['axes.unicode_minus'] = False

x = ['蘋果','香蕉','梨','獼猴桃']

plt.plot(x,jan_sales,'r')# 折線 1 x 2 y 3 color
plt.plot(x,jan_sales,'g',lw=5)# 4 line w

# 繪圖
plt.bar(range(4), sales, 0.4,color='b', alpha = 0.8)
# 添加軸標簽
plt.ylabel('銷量')
# 添加標題
plt.title('水果2018年度銷量')
# 添加刻度標簽
plt.xticks(range(4),['蘋果','香蕉','梨','獼猴桃'])
# 設置Y軸的刻度范圍
plt.ylim([2000,15000])

# 為每個條形圖添加數(shù)值標簽
for x,y in enumerate(sales):
 plt.text(x,y+100,'%s' %y,ha='center')

# 顯示圖形
plt.show()

效果圖:

2、折線圖

折線圖主要用于表示數(shù)據(jù)變化的趨勢。折線圖是直線將不同的點連接起來。

# 導入繪圖模塊
import matplotlib.pyplot as plt

#構(gòu)建數(shù)據(jù)
jan_sales = [3010,4029,5021,3056]


# 中文亂碼的處理
plt.rcParams['font.sans-serif'] =['SimHei']
plt.rcParams['axes.unicode_minus'] = False

x = ['蘋果','香蕉','梨','獼猴桃']

#第一個參數(shù)是x軸,第二參數(shù)時y軸數(shù)據(jù),第三個參數(shù)是線的顏色,第二個參數(shù)是線條的粗細
plt.plot(x,jan_sales,'r',lw=5)# 4 line w

# 添加標題
plt.title('水果2018年度1月份銷量圖')
plt.ylim([2000,15000])

# 為每個點添加數(shù)值標簽
for x,y in enumerate(jan_sales):
 plt.text(x,y+100,'%s' %y,ha='center')

# 顯示圖形
plt.show()

效果圖:

折線圖通過調(diào)用plot()方法繪制。

3、餅圖

餅圖主要是用來表示數(shù)據(jù)的占比,給人一眼就可以看出數(shù)據(jù)的占比大小。餅圖使用pie()函數(shù)繪制。

import matplotlib.pyplot as plt

# 設置繪圖的主題風格(不妨使用R中的ggplot分隔)
plt.style.use('ggplot')

# 構(gòu)造數(shù)據(jù)
edu = [0.2515,0.3724,0.3336,0.0368,0.0057]
labels = ['蘋果','香蕉','梨','獼猴桃','桔子']

explode = [0,0.1,0,0,0] # 用于突出顯示大專學歷人群
colors=['#FEB748','#EDD25D','#FE4F54','#51B4FF','#dd5555'] # 自定義顏色

# 中文亂碼和坐標軸負號的處理
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 將橫、縱坐標軸標準化處理,保證餅圖是一個正圓,否則為橢圓
plt.axes(aspect='equal')

# 控制x軸和y軸的范圍
plt.xlim(0,4)
plt.ylim(0,4)

# 繪制餅圖
plt.pie(x = edu,# 繪圖數(shù)據(jù)
 explode=explode, # 突出顯示香蕉人群
 labels=labels, # 添加水果銷量水平標簽
 colors=colors, # 設置餅圖的自定義填充色
 autopct='%.1f%%', # 設置百分比的格式,這里保留一位小數(shù)
 pctdistance=0.8,# 設置百分比標簽與圓心的距離
 labeldistance = 1.15, # 設置銷量水平標簽與圓心的距離
 startangle = 180, # 設置餅圖的初始角度
 radius = 1.5, # 設置餅圖的半徑
 counterclock = False, # 是否逆時針,這里設置為順時針方向
 wedgeprops = {'linewidth': 1.5, 'edgecolor':'green'},# 設置餅圖內(nèi)外邊界的屬性值
 textprops = {'fontsize':12, 'color':'k'}, # 設置文本標簽的屬性值
 center = (1.8,1.8), # 設置餅圖的原點
 frame = 1)# 是否顯示餅圖的圖框,這里設置顯示

# 刪除x軸和y軸的刻度
plt.xticks(())
plt.yticks(())
# 添加圖標題
plt.title('2018年水果銷量分析')

# 顯示圖形
plt.show()

效果圖:

簡單介紹下pie函數(shù)參數(shù):

  • x: 指定繪圖的數(shù)據(jù)
  • explode:指定餅圖某些部分的突出顯示,即呈現(xiàn)爆炸式
  • labels:為餅圖添加標簽說明,類似于圖例說明
  • colors:指定餅圖的填充色
  • autopct:設置百分比格式,如'%.1f%%'為保留一位小數(shù)
  • shadow:是否添加餅圖的陰影效果
  • pctdistance:設置百分比標簽與圓心的距離
  • labeldistance:設置各扇形標簽(圖例)與圓心的距離;
  • startangle:設置餅圖的初始擺放角度, 180為水平;
  • radius:設置餅圖的半徑大?。?/li>
  • counterclock:是否讓餅圖按逆時針順序呈現(xiàn), True / False;
  • wedgeprops:設置餅圖內(nèi)外邊界的屬性,如邊界線的粗細、顏色等, 如wedgeprops = {'linewidth': 1.5, 'edgecolor':'green'}
  • textprops:設置餅圖中文本的屬性,如字體大小、顏色等;
  • center:指定餅圖的中心點位置,默認為原點
  • frame:是否要顯示餅圖背后的圖框,如果設置為True的話,需要同時控制圖框x軸、y軸的范圍和餅圖的中心位置;

4、散點圖

散點圖主要的作用是判斷兩個變量之間關系的強弱或者是否存在關系。

散點圖由scatter()方法繪制。

import numpy as np
import matplotlib.pyplot as plt

# 數(shù)據(jù)個數(shù)
n = 50
# 均值為0, 方差為1的隨機數(shù)
x = np.random.normal(0, 1, n)
y = np.random.normal(0, 1, n)

# 計算顏色值
color = np.arctan2(y, x)
# 繪制散點圖
plt.scatter(x, y, s = 75, c = color, alpha = 0.5)
# 設置坐標軸范圍
plt.xlim((-1.5, 1.5))
plt.ylim((-1.5, 1.5))

# 不顯示坐標軸的值
plt.xticks(([-1,0,1,2,3,4]))
plt.yticks(([-1,0,1,2,3,4]))

plt.show()

效果圖:

5、箱線圖

箱線圖一般用來展現(xiàn)數(shù)據(jù)大小、占比、趨勢等等的呈現(xiàn),其包含一些統(tǒng)計學的均值、分位數(shù)、極值等等統(tǒng)計量,因此,該圖信息量較大,不僅能夠分析不同類別數(shù)據(jù)平均水平差異(需在箱線圖中加入均值點),還能揭示數(shù)據(jù)間離散程度、異常值、分布差異等等。

使用boxplot()方法繪制。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
np.random.seed(2) #設置隨機種子
df = pd.DataFrame(np.random.rand(5,4),
columns=['A', 'B', 'C', 'D'])#先生成0-1之間的5*4維度數(shù)據(jù),再裝入4列DataFrame中
df.boxplot() #也可用plot.box()
plt.show()

效果圖:

6、雷達圖

雷達圖可以用來顯示一個周期數(shù)值的變化,也可以用來展示對個對象/維度之間的關系

import numpy as np
import matplotlib.pyplot as plt

#標簽
labels = np.array(['語文','數(shù)學','英語','生物','物理','化學'])
#數(shù)據(jù)個數(shù)
dataLenth = 6
#數(shù)據(jù)
data = np.array([7,4,3,6,4,8])

angles = np.linspace(0, 2*np.pi, dataLenth, endpoint=False)
data = np.concatenate((data, [data[0]])) # 閉合
angles = np.concatenate((angles, [angles[0]])) # 閉合

fig = plt.figure()
ax = fig.add_subplot(111, polar=True)# polar參數(shù)?。?
ax.plot(angles, data, 'bo-', linewidth=2)# 畫線
ax.fill(angles, data, facecolor='r', alpha=0.25)# 填充
ax.set_thetagrids(angles * 180/np.pi, labels, fontproperties="SimHei")
ax.set_title("matplotlib雷達圖", va='bottom', fontproperties="SimHei")
ax.set_rlim(0,10)
ax.grid(True)
plt.show()

效果圖:

7、氣泡圖

氣泡圖用于判斷3個變量之間是否存在某種關系。它跟散點圖有點類似,只不過氣泡圖以氣泡大小作為新的維度

import pandas as pd
import matplotlib.pyplot as plt
import pandas as pd

d = {"時間":pd.Series([2006,2007,2008,2009,2010]),
  "數(shù)量":pd.Series([10,200,120,150,300]),
  "大小":pd.Series([50,130,40,50,160]),
  "分類":pd.Series([1,2,0,1,2]),
  "判斷":pd.Series([True,True,True,True,True])}

df=pd.DataFrame(d)

#先定義氣泡大小,rank 函數(shù)將大小列進行大小分配,越大的值分配結(jié)果也越高
#n 為倍數(shù),用來調(diào)節(jié)氣泡的大小,且看后頭

size=df['大小'].rank()
n=20

#定義一個字典,將顏色跟對應的分類進行綁定

color={0:'red',1:'blue',2:'orange'}

#增加color的參數(shù),用列表解析式將data分類中的每個數(shù)據(jù)的數(shù)字映射到前面color的顏色中

plt.scatter(df['數(shù)量'],df['大小'],color=[color[i] for i in df['分類']],s=size*n,alpha=0.6)
plt.show()

效果圖:

氣泡圖用也是scatter方法繪制,和散點圖一樣。差別在于點的大小不一樣,散點圖的點都是一樣的,而氣泡圖點的大小不一樣。

以上就是柱狀圖、散點圖、氣泡圖、折線圖的實現(xiàn)方式。希望給大伙帶來幫助。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • Python實現(xiàn)提取音樂頻譜的方法詳解

    Python實現(xiàn)提取音樂頻譜的方法詳解

    你有沒有經(jīng)常好奇一些音樂軟件的頻譜特效是怎么做的,為什么做的這么好看?有沒有想試試自己提取音樂頻譜并可視化展現(xiàn)出來?本文就來教你如何利用Python提取音樂頻譜,快來學習一下吧
    2022-06-06
  • Django?logging日志模塊實例詳解(日志記錄模板配置)

    Django?logging日志模塊實例詳解(日志記錄模板配置)

    Django使用python自帶的logging作為日志打印工具,下面這篇文章主要給大家介紹了Django?logging日志模塊(日志記錄模板配置)的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • python爬蟲要用到的庫總結(jié)

    python爬蟲要用到的庫總結(jié)

    在本篇內(nèi)容中小編給大家整理的是關于python爬蟲要用到的庫總結(jié)內(nèi)容,需要的朋友們可以學習下。
    2020-07-07
  • 關于python中的xpath解析定位

    關于python中的xpath解析定位

    這篇文章主要介紹了關于python中的xpath解析定位,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Python如何測試stdout輸出

    Python如何測試stdout輸出

    這篇文章主要介紹了Python如何測試stdout輸出,幫助大家更好的理解和學習Python,感興趣的朋友可以了解下
    2020-08-08
  • python中的flask框架Jinja?模板入門教程

    python中的flask框架Jinja?模板入門教程

    這篇文章主要介紹了?python中的flask框架Jinja?模板入門,Jinja?模板其實是?html?文件,一般情況下放在?Flask?工程的?/templates?目錄下,對python?flask?Jinja?模板相關知識感興趣的朋友一起看看吧
    2022-04-04
  • python合并兩個字典的方法總結(jié)

    python合并兩個字典的方法總結(jié)

    在Python中,有多種方法可以通過使用各種函數(shù)和構(gòu)造函數(shù)來合并字典,在本文中,我們將討論一些合并字典的方法,有需要的小伙伴可以參考一下·
    2023-09-09
  • Python中如何生成GeoJSON數(shù)據(jù)

    Python中如何生成GeoJSON數(shù)據(jù)

    這篇文章主要介紹了Python中生成GeoJSON數(shù)據(jù),無論使用geojson庫還是geopandas庫,都可以生成包含地理空間數(shù)據(jù)的GeoJSON文件,文中介紹了使用這些庫生成GeoJSON數(shù)據(jù)的簡單示例,需要的朋友可以參考下
    2023-10-10
  • 零基礎寫python爬蟲之HTTP異常處理

    零基礎寫python爬蟲之HTTP異常處理

    我們在使用爬蟲來抓取網(wǎng)頁內(nèi)容的時候,HTTP異常是必須要注意的一項,所以本文,我們來詳細探尋一下HTTP異常處理的相關內(nèi)容,通過一些具體的實例來分析一下,非常的簡單,但是卻很實用。
    2014-11-11
  • Python3.6使用tesseract-ocr的正確方法

    Python3.6使用tesseract-ocr的正確方法

    今天小編就為大家分享一篇關于Python3.6使用tesseract-ocr的正確方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10

最新評論

大化| 报价| 河津市| 彝良县| 安平县| 磴口县| 阳城县| 仁布县| 罗甸县| 四会市| 吉林省| 布拖县| 安达市| 安新县| 南川市| 静安区| 武宣县| 安徽省| 洛南县| 奉贤区| 大邑县| 荃湾区| 五大连池市| 股票| 昭通市| 铁岭市| 荥阳市| 监利县| 昭通市| 平罗县| 北碚区| 会泽县| 六枝特区| 阳曲县| 开原市| 霍山县| 神农架林区| 横山县| 海原县| 稻城县| 邵阳市|