1. 程式人生 > >玩轉視覺化繪圖 matplotlib簡單繪圖

玩轉視覺化繪圖 matplotlib簡單繪圖

matolotlib 基本圖形繪製

from pandas import Series,DataFrame
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

下面先做兩個例子繪折線圖

Series生成圖表

ts=Series(np.random.randn(120),index=pd.date_range('1/1/2018',periods=120))
ts=ts.cumsum()  
ts.head()
    2018-01-01    0.732337
    2018-01
-02 1.222352 2018-01-03 0.460722 2018-01-04 0.694276 2018-01-05 0.394703 Freq: D, dtype: float64
ts.plot(kind='line',
       title='2018 time',
       label='2018',
       style='--g',
       color='red',
       alpha=0.5,
       grid=True,
       rot=60,
       ylim=[-30,50],
       yticks=list(range(-20
,50,5)), use_index=True, figsize=(8,5), legend=True)

DataFrame生成圖表

df=DataFrame(np.random.randn(120,4),index=pd.date_range('1/1/2018',periods=120),columns=list('ABCD'))
df=df.cumsum()
df.head()  #檢視前五行資料
A B C D
2018-01-01 1.796606 -0.105809 0.508237 -0.217147
2018-01-02 1.594785 -0.191255 -1.438882 -0.348196
2018-01-03 2.123106 0.311300 -1.532028 -0.719643
2018-01-04 1.209116 1.676585 -0.853266 -1.523482
2018-01-05 -0.165966 0.150911 -1.813108 0.114975
df.plot(kind='line',
       title='2018 time',
       label='2018',
       style='--',
       alpha=0.5,
       grid=True,
       rot=60,
       use_index=True,
       figsize=(15,8),
       fontsize='large',
       legend=True,
       subplots=False) 

繪圖標籤總結:

#Series.plot() series的index為橫座標,value為縱座標
#figsize:影象大小標籤
#title:影象標題名稱
#kind:line,bar 折線圖、柱狀圖等形狀設定
#label:為圖例標籤,DataFrame是列名為label圖例標籤
#style:風格字串 包括linestyle,narker,color
#color:顏色
#alpha:透明度
#grid:圖表網格
#xlim 、ylim:x,y軸界限
#xticks,yticks:x,y刻度值
#legend:是否顯示圖例 使用plt.legend

下面練習簡單的圖形繪製

1. 柱狀圖與 堆疊圖

fig,axes=plt.subplots(4,1,figsize=(10,15)) #建立四個子圖
df1=Series(np.random.randint(0,10,16),index=list('abcdefghijklmnop'))
df2=DataFrame(np.random.rand(10,3),columns=['a','b','c'])

#單系列圖
df1.plot(kind='bar',grid=True,alpha=0.6,ax=axes[0])  #選擇第一個子圖

#多系列圖
df2.plot(kind='bar',alpha=0.5,ax=axes[1]) #選擇第二個子圖

#多系列圖和堆疊圖
df2.plot(kind='bar',colormap='Blues_r',edgecolor='green',stacked=True,ax=axes[2])#選擇第三個子圖

df2.plot.barh(ax=axes[3])

柱狀圖

2. 面積圖

fig,axes=plt.subplots(2,1,figsize=(8,6))
df3=DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])  #正值的資料
df4=DataFrame(np.random.randn(10,4),columns=['a','b','c','d'])  #正值和負值都有的資料

df3.plot.area(alpha=0.5,ax=axes[0],colormap='Greens_r')
df4.plot.area(stacked=False,colormap='Set2',alpha=0.5,ax=axes[1])

#stacked 是否堆疊,預設區域圖是堆疊
#為了產生堆積面積圖,每列需要是全部正值或者是全部是負值
#當資料有缺失na值時,會自動填充為0

面積圖

3. 填充圖

fig,axes=plt.subplots(2,1,figsize=(8,6))
x=np.linspace(0,5*np.pi,1000)
y1=np.sin(x)
y2=np.sin(2*x)
axes[0].fill_between(x,y1,y2,color='g',alpha=0.5,label='area') #填充
axes[0].grid()

x2=np.arange(0.0,4.0*np.pi,0.01)
y2=np.sin(x2)
axes[1].plot(x2, y2)
axes[1].plot((x2.min(),x2.max()), (0,0)) #水平基準線
axes[1].fill_between(x2,y2,color='r',alpha=0.5)  #填充 
axes[1].grid()

填充圖

4. 餅圖

s=Series(2*np.random.rand(4),index=['a','b','c','d'],name='series')
plt.axis('equal') #讓圖形的長和寬相等
plt.pie(s,colors=['r','g','b','y'],
        explode=[0.1,0,0,0],  #每部分的偏移量
        labels=s.index,
        autopct='%.2f%%',  # 餅圖上的資料標籤顯示方式
        labeldistance=1.2, # 畫餅標記的直徑  預設1.1
        pctdistance=0.8,   # 每個切片的中心和通過autopct生成的文字開始之間的比例
        shadow=True,   #陰影
        startangle=0,   #開始角度
        radius=1.5,     #半徑
        frame=False)

print(s)
a    0.435720
b    0.888153
c    1.066442
d    1.867224
Name: series, dtype: float64

餅圖

5. 直方圖和密度圖

s1=Series(np.random.randn(1000))
s1.hist(bins=20,             #箱子寬度
      histtype='bar',        #風格 bar ,step
      align='mid',           #對齊方式 left  mid right 
      orientation='vertical',#水平還是垂直 horizontal ,vertical
      normed=True,       #標準化
       alpha=0.5)

#密度圖
s1.plot(kind='kde',style='k--',grid=True)   #密度圖時候    normed=True,  

直方圖和密度圖

6. 散點圖

plt.figure(figsize=(8,6))
x=2*np.random.randn(1000)
y=np.random.randn(1000)
plt.scatter(x,y,marker='.',
           s=np.random.randn(1000)*100,   #散點大小
           alpha=0.5,
            c=np.random.randn(1000)*100,  #散點顏色
           cmap='Reds')
plt.grid()

散點圖

7. 矩陣散點圖

ddf=DataFrame(np.random.randn(100,4),columns=['a','b','c','d'])
pd.plotting.scatter_matrix(ddf,figsize=(10,6),
                           marker='o',
                           diagonal='kde',#只能並且在 hist和kde 中選擇一個,每個指標的頻率圖
                           range_padding=0.1, #圖形在x軸和y軸原點的留白
                           alpha=0.6)

散點矩陣圖

8. 極座標圖

##建立資料
s= Series(np.arange(20))
theta=np.arange(0,2*np.pi,0.02)
#print(s.head())
#print(theta[:60])

#建立子座標
fig=plt.figure(figsize=(8,4))
ax1=plt.subplot(121,projection='polar')
ax2=plt.subplot(122,projection='polar')

#也可以這樣建立ax=fig.add_subplot(111,polar=True)

ax1.plot(theta,theta/6,linestyle='--',lw=2)  #lw為線寬
#ax1.plot(s,linestyle='--',marker='.',lw=2)
ax2.plot(theta,theta/6,linestyle='--',lw=2)

#引數設定比較

#座標軸正方向,預設逆時針方向
ax2.set_theta_direction(-1) 

#設定極座標角度網格線顯示和標籤 ,其中網格和標籤數量一致
ax2.set_thetagrids(np.arange(0.0,360.0,90),['a','b','c','d'])

#設定網格線顯示,引數必須為正數
ax2.set_rgrids(np.arange(0.2,2,0.2))

#設定角度偏移,逆時針  弧度
ax2.set_theta_offset(np.pi/2)

#設定極座標半徑範圍
ax2.set_rlim(0.2,1.8)

ax2.set_rmax(2) #極座標半徑的最大值

ax2.set_rticks(np.arange(0.1,1.5,0.2)) #極座標半徑網格線的顯示範圍

極座標圖

9. 箱線圖

fig,axes=plt.subplots(2,1,figsize=(10,6))
dff=DataFrame(np.random.rand(10,5),columns=['A','B','C','D','E'])
color=dict(boxes='DarkGreen',whiskers='DarkOrange',medians='DarkBlue',caps='Gray')

#boxes 箱線顏色
#whiskers 分位數與error bar橫線之間豎線的顏色
#medians 中位數線顏色
#caps  橫線顏色
dff.plot.box(ylim=[0,1.2],
            grid=True,
            color=color,
            ax=axes[0])

dff.plot.box(vert=False,        #vert 預設垂直,是否垂直
             positions=[1,4,9,8,6], #箱線圖佔位
            grid=True,
            color=color,
            ax=axes[1])

箱線圖

另外還有其他比較複雜的圖形繪製和繪圖引數的知識需要花時間熟悉進行學習,可以在matplotlib官網進行學習。

相關推薦

視覺繪圖 matplotlib簡單繪圖

matolotlib 基本圖形繪製 from pandas import Series,DataFrame import matplotlib.pyplot as plt import numpy as np import pandas as pd

Python視覺Matplotlib繪圖(2.設定範圍、標籤、標題、圖例(詳細引數))

1.為繪製的圖新增範圍 import matplotlib.pyplot as plt # 匯入繪圖模組 import numpy as np # 匯入需要生成資料的numpy模組 '''新增範圍''' y = np.arange(0,10,1) plt.plo

【原】資料視覺Matplotlib : pandas中的繪圖函式

Pandas有許多能夠利用DataFrame物件資料組織特點來建立標準圖表的高階繪圖方法,本文主要介紹的是pandas中的繪圖函式。 #coding:utf-8 import matplotlib.pyplot as plt import pandas as pd import numpy as np fr

phthon資料視覺matplotlib在window終端的視覺xmanger passive方式簡單實現(網上沒找到辦法,自己折騰出來的網際網路第一貼)

如圖配置window的ip   然後securecrt遠端 export DISPLAY=10.0.3.2:0.0   xhost + 測試程式碼 python >>> import matplotlib.pyplot as

python資料視覺matplotlib簡單示例

官方API 超簡單示例(基本表格): 照常上最簡單直觀的程式碼:(demo1) import matplotlib.pyplot as plt dot=[3,4,2,1] plt.plot(dot) plt.ylabel('The name of the Y a

Python視覺Matplotlib(4.三種設定樣式方法、設定座標刻度以及標籤、設定顯示出特殊字元)

1.三種設定方式   (1)向方法傳入關鍵字引數 上一節已經總結過,一直在使用   (2)對例項使用一系列的setter方法           具體的方法直接看程式碼  import matplotli

Python視覺Matplotlib(3.線條的詳細樣式及線性、儲存圖片、plot的詳細風格和樣式)、背景色、點和線的詳細設定

1.修改線條的樣式: linestyle、color、marker(標記) ''' 顏色 color:修改顏色,可以簡寫成c 樣式 linestyle='--' 修改線條的樣式 可以簡寫成 ls 標註 marker : 標註 線寬 linewidth: 設

資料視覺--> Matplotlib

Matplotlib庫入門  1、pyplot的繪圖區域:可將全域性繪圖區域分割槽成多個子區域 demo:    2、matplotlib的pyplot介紹   demo:繪製4條曲線   ** format_string :    

[]視覺的資料結構和演算法

原文地址:http://coolshell.cn/articles/4671.html還記得之前釋出過的那個關於視覺化排序的文章嗎?在網上又看到了一箇舊金山大學David Galles做的各種視覺化的資料結構和基本演算法的主頁,網址在這裡,大家可以看看。我把這個頁面的目錄列在下面並翻譯了一下,大家可以直接點選

智聯Python相關職位的資料分析及視覺-Pandas&Matplotlib篇 python

Numpy(Numerical Python的簡稱)是Python科學計算的基礎包。它提供了以下功能: 快速高效的多維陣列物件ndarray。 用於對陣列執行元素級計算以及直接對陣列執行數學運算的函式。 用於讀寫硬碟上基於陣列的資料集的工具。 線性代數運算、傅立

Python資料視覺matplotlib實踐chapter-01

""" Example 1.3.1: 函式plot() """ import matplotlib.pyplot as plt import numpy as np x = np.linspace(0.05,10,1000) # x = 0.05到10的等間距1000個點 y = np

Python資料視覺matplotlib實踐chapter-02

""" Example 2.1: 函式bar() """ import matplotlib as mpl import matplotlib.pyplot as plt # 解決matplotlib無法顯示中文問題 mpl.rcParams['font.sans-serif']=['Sim

wxpy:用 Python 微信就是這麼簡單

前言 wxpy 在 itchat 的基礎上,通過大量介面優化提升了模組的易用性,並進行豐富的功能擴充套件。 用來幹啥 一些常見的場景 控制路由器、智慧家居等具有開放介面的玩意兒 執行指令碼時自動把日誌傳送到你的微信 加群主為好友,自動拉進群中 跨號或跨群轉發訊

4、《SSO CAS單點系列》之 實操!輕鬆SSO CAS就這麼簡單(相遇篇)

CAS是中央認證服務Central Authentication Service的簡稱。最初由耶魯大學的Shawn Bayern 開發,後由Jasig社群維護,經過十多年發展,目前已成為影響最大、廣泛使用的、基於Java實現的、開源SSO解決方案。2012年,Jasig和另一

Python視覺Matplotlib的使用

一。匯入資料import pandas as pd unrate = pd.read_csv('unrate.csv') unrate['DATE'] = pd.to_datetime(unrate['DATE']) print(unrate.head(12)) 結果如下:

【機器學習】【視覺Matplotlib的scatter函式用法

本文出處:http://blog.csdn.net/u013634684/article/details/49646311 最近開始學習Python程式設計,遇到scatter函式,感覺裡面的引數不知道什麼意思於是查資料,最後總結如下: 1、scatter函式原型 2、

Python資料視覺Matplotlib 直方圖、箱線圖、條形圖、熱圖、折線圖、散點圖。。。

介紹       使用Python進行資料分析,資料的視覺化是資料分析結果最好的展示方式,這裡從Analytic Vidhya中找到的相關資料,進行一系列圖形的展示,從中得到更多的經驗。      

視覺庫-Matplotlib-盒圖(第四天)

盒圖由五個數值點組成,最小觀測值,下四分位數,中位數,上四分位數,最大觀測值 IQR = Q3 - Q1  Q3表示上四分位數, Q1表示下四分位數,IQR表示盒圖的長度 最小觀測值 min =Q1 - 1.5*IQR 最大觀測值 max=Q3 + 1.5*IQR  , 大於最大值或

視覺庫-Matplotlib-直方圖(第四天)

1.plt.hist(array, bins, color)  # array表示數值, bins表示的是bin的範圍 data = np.random.normal(0, 20, 1000) # 畫出bins值 bins = np.arange(-100, 100, 5) plt.hist

視覺庫-Matplotlib-散點圖(第四天)

1. 畫基本的散點圖 plt.scatterdata[:, 0], data[:, 1], marker='o', color='r', label='class1', alpha=0.4) np.random.multivariate_normal 根據均值和協方差生成多行列表 mu_vec1 =