python可視化工具:matplotlib+pyecharts使用詳解

準備

安裝命令:pip install matplotlib
使用環境:jupyter
開發工具版本:python3

一、matplotlib快速入門

Matplotlib 對象總覽 :
Matplotlib 對象總覽

如何選擇需要圖形:
如何選擇需要圖形

調用 figure 創建一個繪圖對象: plt.figure(figsize=(8,4))

  • 也可以不創建繪圖對象直接調用接下來的plot函數直接繪圖, matplotlib會爲我們自創建一個繪圖對象。
  • 如果需要同時繪製多幅圖表的話,可以是給figure傳遞一個整數參數指定圖標的序號,如果所指定序號的繪圖對象已經存在的話,將不創建新的對象,而只是讓它成爲當前繪圖對象。
  • figsize: 指定繪圖對象的寬度和高度,單位爲英寸;
  • dpi: 指定繪圖對象的分辨率,每英寸多少個像素,缺省值爲80。因此本例中所創建的圖表窗口的寬度爲8*80 = 640像素,高度爲4*80像素質。
from matplotlib import pyplot as plt
# 中文轉換  
plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定默認字體
plt.rcParams['axes.unicode_minus'] = False  # 解決保存圖像是負號'-'顯示爲方塊的問題


# 創建畫板
plt.Figure(figsize=(8,4))
#在畫板對象上繪製一條折線圖
plt.plot([1,2,3,4],[4,5,3,15],label='第一條折線')   # label是小圖標的註解
plt.plot([2,3,4],[10,14,12],label = '第二條折線')
# 進一步完善圖表

#添加x軸標籤,y軸標籤
plt.xlabel('X軸')
plt.ylabel('Y軸')

# 爲圖表添加標題
plt.title('簡單的折線圖')
# 爲圖表添加小圖標

plt.legend(loc = 'upper right')   #確定小圖標的位置
# 顯示圖表
plt.show()   # 在jupyter中不需要打印

顯示:
1530102194834

二、matplotlib進階–繪製常見的圖表

1、繪製折線圖

  • 適用場景:折線圖適合二維的大數據集,還適合多個二維數據集的比較。一般用來表示趨勢的變化,橫軸一般爲日期字段
  • 優勢:容易反應出數據變化的趨勢。
# 一,繪製折線圖
x = [1,2,3,4,5,6,7,8]
y = [5,2,4,2,1,4,5,2]
plt.plot(x,y,label='折線圖')
plt.title('繪製折線圖')
plt.legend(loc='upper right')
plt.xlabel('x')
plt.ylabel('y')

這裏寫圖片描述

2、繪製柱狀圖

  • 適用場景:顯示各個項目之間的比較情況,和柱狀圖類似的作用
  • 優勢:每個條都清晰表示數據,直觀
  • 劣勢:柱狀圖的侷限在於只適用中小規模的數據集
  • 延伸圖表:堆積條形圖、百分比堆積條形圖
# 繪製柱狀圖 
x,y,x2,y2 = [1,3,5,7,9],[5,2,7,8,2],[2,4,6,8,10],[8,6,2,5,6]
plt.bar(x,y,label='柱狀圖-1',color='r')
plt.bar(x2,y2,label='柱狀圖-2',color='g') # 通過color指定顏色
plt.title('繪製柱狀圖-1')
plt.legend(loc='upper right')
plt.xlabel('x:樣本值')
plt.ylabel('y:樣本數')

這裏寫圖片描述

3、繪製條形圖

• plt.barh 爲我們創建條形圖。本質上條形圖就是橫向的柱狀圖,故兩個的配置幾乎完全相同
• 不同的是一般用柱狀圖表達數據較少的數據,如果數據量較大(超過10條),建議可以用條形圖

# 繪製條形
x,y,x2,y2 = [1,3,5,7,9],[5,2,7,8,2],[2,4,6,8,10],[8,6,2,5,6]
# plt.barh(x,y,label='條形圖-1',color='r')
# plt.barh(x2,y2,label='條形圖-2',color='g') # 通過color指定顏色
plt.barh(x,y,label='條形圖-1',color='#000000')
plt.barh(x2,y2,label='條形圖-2',color='#0000FF') # 通過color指定顏色
plt.title('繪製條形圖-1')
plt.legend(loc='upper right')
plt.xlabel('x:樣本值')
plt.ylabel('y:樣本數')

1530102409683

4、繪製直方圖

  • 直方圖又稱質量分佈圖,它是表示資料變化情況的一種主要工具。

  • 用直方圖可以解析出資料的規則性,比較直觀地看出產品質量特性的分佈狀態,對於資料分佈狀況一目瞭然,便於判斷其總體質量分佈情況。

# 繪製直方圖:直觀顯示產品的總體質量分佈  如:頻率分佈直方圖
population_ages = [22,55,62,45,21,22,34,42,42,4,99,102,110,120,121,122,130,111,115,112,80,75,65,54,44,43,42,48] 
# 劃分的區間
bins = [0,10,20,30,40,50,60,70,80,90,100,110,120,130]
plt.hist(population_ages,bins,histtype='bar',label='年齡分佈情況')
plt.xlabel('x:年齡區間')
plt.ylabel('y:人數')
plt.title('年齡分佈直方圖')

1530102476052

5、繪製餅狀圖

  • 適用場景:顯示各項的大小與各項總和的比例。適用簡單的佔比比例圖,在不要求數據精細的情況適用。
  • 優勢:明確顯示數據的比例情況,尤其合適渠道來源等場景
  • 劣勢:不會具體的數值,只是整體的佔比情況。  
audience = [2,5,10,3]
types = ['少年','青年','中年','老年']

# 定義每一個扇圖的顏色
# colors = ['#ff0000','#00ff00','#cccccc','#000000']
colors = ['c','m','g','b']
plt.pie(audience,
       labels=types,  #扇形取餘的標註
       autopct='%1.1f%%', #扇形取餘的顯示百分比
       colors=colors,  #扇形區域的顏色
        startangle=90,  #開始繪製扇形取餘的角度
        explode = [0.2,0,0,0],  # 突出顯示某一扇形區,數值取(0-1)之間
        shadow=True  # 是否顯示陰影
       )
plt.title("關注世界盃的人數佔比")
plt.show()

1530102608847

6、繪製散點圖

  • 適用場景:顯示若干數據系列中各數值之間的關係,類似XY軸,判斷兩變量之間是否存在某種關聯。散點圖適用於三維數據集,但其中只有兩維數據是需要比較的。另外,散點圖還可以看出極值的分佈情況
  • 優勢:對於處理值的分佈和數據點的分簇區域(通過設置橫縱項的輔助線),散點圖都很理想。如果數據集中包含非常多的點,那麼散點圖便是最佳圖表類型
  • 劣勢:在點狀圖中顯示多個序列看上去非常混亂
# 繪製散點圖
x,y = [1,2,3,4,5,6,7,8],[5,2,4,2,1,4,5,2]
# x,y表示x,y軸座標,color點的顏色,s點的大小,marker顯示點的形狀 label是獨立註解
plt.scatter(x,y,color = 'r',s=100,marker='o',label = 'skitscat') 
plt.legend()

1530102698229

7、繪製堆疊圖

  • 堆疊圖用於顯示『部分對整體』 隨時間的關係。 堆疊圖基本上類似於餅圖,只是隨時間而變化。
  • 讓我們考慮一個情況,我們一天有24 小時,我們想看看我們如何花費時間。 我們將我們的活動分爲:睡覺,吃飯,工作和玩耍。想看每個活動的佔比及分佈情況,可以考慮堆疊圖
# 繪製堆疊圖 :部分佔總體的情況
days = [1,2,3,4,5]
sleeping = [7,8,6,11,7]
eating = [2,3,4,3,2]
working = [7,8,7,2,2]
playing = [8,5,7,8,13]
plt.figure(figsize=(8,6))
# days 時間軸,堆疊數據
plt.stackplot(days,sleeping,eating,working,playing,
             colors=['b','r','c','m'])
plt.title('堆疊圖')
# 爲堆疊圖加上圖例*****************
plt.plot([],[],color='b',label='sleeping',linewidth=5)
plt.plot([],[],color='r',label='eating',linewidth=5)
plt.plot([],[],color='c',label='working',linewidth=5)
plt.plot([],[],color='m',label='playing',linewidth=5)

plt.xlabel('x:星期')
plt.ylabel('y:花費時間')
plt.legend()

1530102769661

三、matplotlib進階–綜合應用

通過對三角函數的圖形畫法,掌握刻度,標示,點標註的基本使用

from matplotlib import pyplot as plt
import numpy as np
from numpy import pi as PI
plt.rcParams["font.sans-serif"] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False


# 從-pi 到pi平均取256個點
X = np.linspace(-np.pi,np.pi,256,endpoint=True)
# 根據X的值,求正弦和餘弦函數
sin,cos = np.sin(X),np.cos(X)

# 繪製正弦
plt.plot(X,sin,'b-',label='正弦',lw=2.5) # 簡寫用法,'b-'  表示顏色爲藍,-代表折線圖
plt.plot(X,cos,'r-',label='餘弦',lw=2.5)

# 將x軸和y軸同時放大1.5倍
plt.xlim(X.min()*1.5,X.max()*1.5)
plt.ylim(cos.min()*1.5,cos.max()*1.5)


# 手動指定x軸和y軸的座標刻度
plt.xticks([-PI,-PI/2,0,PI/2,PI])
plt.yticks([-1,0,1]) # Y軸3個座標點

# 替換X軸中的數字,保持PI爲π,用後面符號代替前面的數字
plt.xticks([-PI,-PI/2,0,PI/2,PI],[r'$-\pi$',r'$-\pi/2$',r'$0$',r'$+\pi/2$',r'$+\pi$',])# 第二個list裏面的pi是matplotlib裏面的跟numpy裏面沒有關係

# 隱藏和移動座標軸
  # 1. 首先獲取Axes對象
ax = plt.gca()   # 重點是這個,拿到了裏面的刻度內容

    # 2.隱藏右邊界和上邊界
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

    # 3.設置座標軸刻度顯示位置
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
    # 4.先獲取到下邊界
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))

# 根據兩點繪製一條虛線
t=2*PI/3 # 先取一個數據點
plt.plot([t,t],[0,np.cos(t)], color ='blue', linewidth=2.5, linestyle="--")
plt.plot([t,t],[0,np.sin(t)], color ='red', linewidth=2.5, linestyle="--")

# 用繪製散點圖方法在正弦和餘弦上分別標註一個點 (t,sin(t)),(t,cos(t))
plt.scatter(t,np.cos(t),50,color='blue') # j簡略寫法,size=50
plt.scatter(t,np.sin(t),50,color='red')

##### 爲這個特殊點添加標註
plt.annotate(r'$\cos(\frac{2\pi}{3})=-\frac{1}{2}$',
xy=(t, np.cos(t)), xycoords='data',
xytext=(-90, -50), textcoords='offset points', fontsize=16,
arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
plt.annotate(r'$\cos(\frac{2\pi}{3})=-\frac{\sqrt{3}}{2}$',
xy=(t, np.sin(t)), xycoords='data',
xytext=(10, 30), textcoords='offset points', fontsize=16,
arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

# # 設置x,y軸的刻度,並設置字體
for label in ax.get_xticklabels()+ax.get_yticklabels(): # 獲取所有的刻度
    label.set_fontsize(18)  # 對每一個刻度設置字體
    label.set_bbox(dict(facecolor='r',edgecolor='m',alpha=0.4)) # 對每個刻度設置邊框:facecolor:背景顏色,edgecolor邊框顏色,alpha:透明度


#顯示圖例
plt.legend(loc='upper left')
plt.show()

這裏寫圖片描述

四、matplotlib進階-優化圖形

1、優化柱狀圖

from matplotlib import pyplot as plt
import numpy as np
plt.rcParams["font.sans-serif"]=['SimHei']  # 用於正常顯示中文標籤
plt.rcParams['axes.unicode_minus']=False  # 用來正常顯示負號


# 再論柱狀圖
# 創建一個畫板
plt.figure(1)

# 爲畫板劃分出多個Axes
ax = plt.subplot(111)# 111 代表用1行1列的第一個畫板

# 數據準備
data = np.array([15,20,18,25]) # y軸數據
width = 0.5 # 柱狀圖寬度
x_bar = np.arange(4) # x軸數據

#繪製柱狀圖
rect = ax.bar(x_bar,data,width=width,color='lightblue')

# 在x,height 對應的座標上添加文字: 
for rec in rect:
    x = rec.get_x() # 獲取x每個座標刻度的值
    height = rec.get_height() # 獲取每個柱狀的高度
    ax.text(x+0.2,1.05*height,str(height)+'W')  # 在x,height 對應的座標上添加文字: 

# 設置x軸的刻度
ax.set_xticks(x_bar)
ax.set_xticklabels(['第一季度','第二季度','第三季度','第四季度'])

# 設置y軸的標註
ax.set_ylabel('銷量(單位:萬件)')
ax.set_xlabel('季度')

# 設置標題:
ax.set_title('2018年季度銷售量統計')

# 是否顯示網格
ax.grid(True)

# 拉伸Y軸,設置y軸位0--30
ax.set_ylim(0,30)

1530103050749

2、利用subplot繪製多幅圖形

# 用subplot()方法繪製多個圖
plt.figure(figsize=(6,6))
plt.figure(1) #開始畫第一個畫板
# 將第一個畫板劃分爲有2行1列的組成的區塊;所以這個畫板有兩個子區域,並獲取到第一塊區域
plt.subplot(211)
# 在第一子區域中繪圖
plt.scatter([1,3,5],[2,4,5])

# 在第二個子區域
plt.subplot(212)
plt.plot([2,4,6],[7,5,12])

# 創建第二個畫板
plt.figure(2)
y = np.array([15,20,18,25]) # y軸數據
x = np.arange(4) # x軸數據
# 在第二個畫板上繪製柱狀圖
plt.plot(x,y)
# 爲柱狀圖添加標題
plt.title('第二個畫板上的數據')

# 從第二個畫板切換到第一個畫板
plt.figure(1)
# 再切換到第一個畫板的第一個區域
plt.subplot(211)
# 爲第一個畫板的第一個圖像加上標題
plt.title('第一個畫板的第一個標題')
# 再切換到第一個畫板的第二個區域
plt.subplot(212)
# 爲第一個畫板的第二個圖像加上標題
plt.title('第一個畫板的第二個標題')

# 設置畫板中兩個圖片的間距
# 調整每隔子圖之間的距離
plt.tight_layout(2)

1530103111317

五、matplotlib進階–加載數據文件進行可視化

需要導入的必要包及其設置:

from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
import csv
import json
import urllib
#用來正常顯示中文標籤
plt.rcParams['font.sans-serif']=['SimHei']
#用來正常顯示負號
plt.rcParams['axes.unicode_minus']=False

1、直接根據數據繪製折線圖

# 1、定義兩個空列表,存放x和y軸數據
x,y = [],[]

with open('data/csv/matplotlib-demo.csv') as file:
    points = csv.reader(file,delimiter=',')
    for row in points:
        x.append(int(row[0]))
        y.append(int(row[1]))

#折線圖
plt.plot(x,y,label='加載csv文件數據')
plt.xlabel('X軸')
plt.ylabel('Y軸')
plt.title('加載數據')
plt.legend()

1530103538264

2、用numpy加載csv數據

# unpack : True 拆分出一個兩維數組
x,y =np.loadtxt('data/csv/matplotlib-demo.csv',delimiter=',',unpack=True)

plt.plot(x,y,label="numpy簡化加載過程")
plt.xlabel('X軸')
plt.ylabel('y軸')
plt.title('加載csv文件數據')
plt.legend()

1530103586728

3、加載網絡接口數據

url = 'https://api.douban.com/v2/book/1220562'
# 利用urllib加載接口數據
souce_data = urllib.request.urlopen(url).read().decode()
# 將字符串形式json數據轉換成python字典
data = json.loads(souce_data)

# 獲取字典中的keys值爲tags下的數據
tags = data['tags']

# 遍歷tags取x軸爲name,y軸爲count
x,y = [],[]
for tag in tags:
    x.append(tag['name'])
    y.append(tag['count'])
# 畫圖
plt.bar(x,y,label='熱搜圖書')
plt.legend()
plt.xlabel('熱搜小說')
plt.ylabel('熱搜排名')
plt.title('文學搜索排名')

1530103704086

六、matplotlib進階–pandas簡化數據可視化

需要導入的必要包及其設置:

from matplotlib import pyplot as plt
from pandas import DataFrame,Series
import numpy as np
import pandas as pd
import csv
import json
import urllib
#用來正常顯示中文標籤
plt.rcParams['font.sans-serif']=['SimHei']
#用來正常顯示負號
plt.rcParams['axes.unicode_minus']=False

1、利用Series繪製折線圖

# 利用隨機函數創建一組隨機序列
# cumsum累加求和
#指定索引
'''
用Series的繪圖的原理
Series的索引作爲x軸數據
Series的value值作爲y軸數據
'''
index = np.arange(0,100,10)
series = Series(np.random.randn(10).cumsum(),index=index)
axes = series.plot(label='折線圖',style='ko-')     # style='ko-' 帶點
# axes = series.plot('bar',label='折線圖')   可以加參數  bar
axes.set_title('利用Series繪製折線圖')
axes.legend()

這裏寫圖片描述

2、利用DtaFrame進行繪圖

df = DataFrame(np.random.randn(10,4),
              index = np.arange(0,100,10),
              columns=list('ABCD'))

df.plot()

1530103824447

# 將DataFrame中各列的數據分配到不同的子圖中
df.plot(subplots=True)

1530103857461

3、繪製柱狀圖和條形圖

#創建畫板獲取axes對象
fig,axes = plt.subplots(2,1,figsize=(10,10))
#調整畫板大小
# fig.set_size_inches(30,10)
# 創建繪圖數據
data = Series(np.random.randn(16),
             index = list('abcdefghijklmnop'))
# 利用series數據在2行1列的畫板上的一塊區域,繪製一個柱狀圖
data.plot(kind='bar',ax=axes[0],color='k',alpha=0.7)
# 利用series數據在2行1列的畫板上的第二個區域,繪製一個柱狀圖
data.plot(kind='barh',ax=axes[1],color='r',alpha=0.7)

1530103912106

4、繪製直方圖

# pandas 讀取excel文件
df = pd.read_excel('data/excel/pandas-matplotlib.xlsx','Sheet1') 

#繪製直方圖
# 創建一個空白的畫板
fig = plt.figure()
# 修改已創建畫板的大小
fig.set_size_inches(10,8)
#在畫板上添加一個Axes繪圖區域
ax = fig.add_subplot(111)
# 在選中的繪圖區域上繪製一個直方圖
ax.hist(df.Age,bins=7)
plt.title('年齡分佈直方圖')
plt.xlabel('年齡')
plt.ylabel('人數')

1530103959832

5、繪製箱線圖

# 繪製箱線圖
fig = plt.figure()
# 創建繪圖區域
ax = fig.add_subplot(111)
ax.boxplot(df.Age)

這裏寫圖片描述

6、分組繪圖

var = df.groupby('Gender').Sales.sum()
# 創建畫板
fig =plt.figure()
# 添加繪圖區域
ax = fig.add_subplot(111)
ax.set_title("標題")

# 根據分組後的數據
var.plot(kind='bar')

這裏寫圖片描述

#根據BMI分組
var = df.groupby('BMI').Sales.sum()
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_title('根據身體情況統計銷售數量')
var.plot(kind='line')

這裏寫圖片描述

7、繪製堆積圖

# 按照身體狀況和性別進行分組後統計銷售數量
var = df.groupby(['BMI','Gender']).Sales.sum()
result = var.unstack()
result

# 繪製堆積圖
#stacked=True 堆積在一起
result.plot(kind='bar',stacked=True,color=(['b','g']))

這裏寫圖片描述

8、繪製散點圖

# 繪製散點圖
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(df.Age,df.Sales)

這裏寫圖片描述

9、繪製氣泡圖

# 繪製氣泡圖
fig = plt.figure()

ax = fig.add_subplot(111)
ax.set_title('年齡和人數關係圖,年齡越大收入越高')
ax.scatter(df.Age,df.Sales,s= df.Income)

這裏寫圖片描述

9、繪製餅狀圖

# 繪製餅圖
#stack() 把列索引轉換成行索引
var = df.groupby(df.Gender).sum()
# 取x座標
x_list = var.Sales
label_list = var.index
# 是否直方顯示
# plt.axis('equal')
plt.pie(x_list,labels=label_list,autopct='%1.1f%%')

這裏寫圖片描述

七、繪圖利器PyEcharts

前導安裝

pip install pyecharts
from pyecharts import Bar
from pyecharts import Line

1、繪製柱狀圖

# 畫簡單的柱狀圖
bar = Bar("主標題", "這裏是副標題")
# pyecharts 遵循所有圖表都先定義數據在進行展示
bar.add("服裝", ["襯衫", "羊毛衫", "雪紡衫","褲子", "高跟鞋", "襪子"], 
        [5, 20, 36, 10, 75, 90])

#方法一: 將圖表渲染輸出到html頁面
# bar.render()    # 如果不穿參數,默認保存到當前文件夾下

# 方法二: 直接再jupyter中展示
bar

這裏寫圖片描述

2、根據柱狀圖繪製堆積圖

# 2、根據柱狀圖繪製堆積圖
attr = ["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"]
v1 = [5, 20, 36, 10, 75, 90]
v2 = [10, 25, 8, 60, 20, 80]
# 添加標題
bar = Bar("柱狀圖數據堆疊示例")
bar.add('商家A',attr,v1,is_stack=True)
bar.add('商家B',attr,v2,is_stack=True)
bar

這裏寫圖片描述

# 爲柱狀圖添加標註點或者標註線
attr = ["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋","襪子"]
v1 = [5, 20, 36, 10, 75, 90]
v2 = [10, 25, 8, 60, 20, 80]
bar = Bar("標記線和標記點示例")
# 爲柱狀圖添加標記點
bar.add("商家A", attr, v1, mark_point=["max"])     #mark_point=["max"] 標註出最大點
# 爲柱狀圖添加標註線  
bar.add("商家B", attr, v2, mark_line=["min", "max"],is_convert=True)   #is_convert=True 行和列轉換
bar

這裏寫圖片描述

3、繪製折線圖

attr = ["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋","襪子"]
v1 = [5, 20, 36, 10, 75, 90]
v2 = [10, 25, 8, 60, 20, 80]

myLine  =Line('折線圖示例')
# is_smooth 點之間是否進行平滑曲線連接
myLine.add('商家A',attr,v1,mark_point=['max'],is_smooth=True)
myLine.add('商家B',attr,v2,is_smooth=True)
myLine

這裏寫圖片描述

4、折線圖修改標註點的形狀和標註文字的字體顏色

attr = ["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋","襪子"]
v1 = [5, 20, 36, 10, 75, 90]
v2 = [10, 25, 8, 60, 20, 80]
markline = Line('添加標註點的折線圖')
markline.add('商家A',attr,v1,
            mark_point=['min','average','max'],
            mark_point_symbol='diamond',
            mark_point_textcolor='#40ff27')
markline.add('商家B',attr,v2,
             mark_point=['min','average','max'],
             mark_point_symbol='arrow',
            mark_point_symbolsize=20)
'''
mark_point 標註點
mark_point_symbol 標註點的形狀
mark_point_symbolsize  標註點的大小
mark_point_textcolor   標註點的字體顏色
'''
markline

這裏寫圖片描述

5、折線圖–面積圖示例

# 5、折線圖--面積圖示例
attr = ["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋","襪子"]
v1 = [5, 20, 36, 10, 75, 90]
v2 = [10, 25, 8, 60, 20, 80]

arealine = Line('面積圖示例')
arealine.add('商家A',attr,v1,
             is_fill=True,
            area_color='#00ff00',
            line_opacity=1,
             area_opacity=0.4,
             symbol= None,
            )
arealine.add('商家B',attr,v2,
             is_fill=True,
            area_color='#000',
            area_opacity=0.3,
             is_smooth=True)
'''
is_fill 爲折線圖所包裹的區域填充顏色
area_color   填充區域的顏色
area_opacity  填充區域的透明度
line_opacity=0.2 線條的不透明度
'''
arealine

這裏寫圖片描述

6、畫餅圖

#6、畫餅圖
from pyecharts import Pie
attr = ["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋","襪子"]
v1 = [5, 20, 36, 10, 75, 90]
v2 = [10, 25, 8, 60, 20, 80]
pie = Pie('餅圖')
pie.add('',attr,v1,is_label_show=True)
pie

這裏寫圖片描述

# 餅圖圓環
attr = ["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"]
v1 = [11, 12, 13, 10, 10, 10]
pie = Pie("餅圖-圓環圖示例",title_pos='center')
pie.add("", attr, v1, radius=[40, 75],
            label_text_color=None,
            is_label_show=True,
            legend_orient='vertical',  #legend_orient 圖例展開的方向
            legend_pos='left')        # 圖例的位置
pie

這裏寫圖片描述

7、散點圖

v1 = [10, 20, 30, 40, 50, 60]
v2 = [10, 20, 30, 40, 50, 60]
scatter = Scatter("散點圖示例")
scatter.add("A", v1, v2)
scatter.add("B", v1[::-1], v2)
scatter

這裏寫圖片描述

v1 = [10, 20, 30, 40, 50, 60]
v2 = [10, 20, 30, 40, 50, 60]
scatter = Scatter("散點圖示例")
scatter.add("A", v1, v2)
scatter.add("B", v1[::-1], v2, is_visualmap=True,
visual_type='size',
visual_range_size=[20, 80])
scatter

這裏寫圖片描述

8、繪製地圖

from pyecharts import Map
value = [155, 10, 66, 78,200,30]
attr = ["廣東", "山東", "北京", "上海","安徽", "新疆"]
map = Map("全國地圖示例", width=1200,
height=600)
map.add("", attr, value, maptype='china')
map

注意:如果以上不顯示地圖,則要安裝第三方庫

pip install echarts-countries-pypkg  
pip install echarts-china-provinces-pypkg    
pip install echarts-china-cities-pypkg
pip install echarts-china-counties-pypkg
pip install echarts-china-misc-pypkg
pip install echarts-united-kingdom-pypkg

大美安徽

from pyecharts import Map
value = [20, 190, 253, 77, 65]
attr = ['汕頭市', '汕尾市', '揭陽市', '陽江市', '肇慶市']
map = Map("廣東地圖示例", width=1200,
height=600)
map.add("", attr, value, maptype='廣東',
is_visualmap=True,
visual_text_color='#000',is_label_show=True)
map

廣東地圖

9、繪製詞雲

from pyecharts import WordCloud
name = ['阿里雲故障', '韓國對陣德國', '楊敬農獲刑', '朱婷36分創紀錄','德國隊出局','暴雨畢業照走紅',
 '孫興慜假摔', '內馬爾助攻席爾瓦', '世界盃','結婚率逐年走低', '巴西2-0塞爾維亞','孟加拉外長訪華', 
 '凱塔加盟利物浦', '瑞典3-0墨西哥', '巴西設中國移民日', '直播手抓眼鏡蛇','韓國2-0德國', 
 '厄齊爾首發', '墨西哥對陣瑞典','騎電動車墜渠溺亡']
value = [
428623, 367294, 356497, 351699, 350049, 348700, 348100, 347200, 345701,
341652, 330256, 329956, 306114, 260829, 229340, 166961, 158863, 148517, 145218, 144918]
wordcloud = WordCloud('繪製詞雲',width=1300, height=620)
wordcloud.add("", name, value, word_size_range=[20, 100])
wordcloud

20180628關鍵詞

參考文獻:

matplotlib官方使用指南

matplotlib圖例使用模板

pyecharts官方文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章