pyecharts基本繪圖技巧入門

大家好,我是天空之城。

以下內容部分來自公衆號“數據分析與統計學之美”,號主很厲害,有需要的加他哦。

Echarts是一個由百度開源的數據可視化工具,憑藉着良好的交互性,精巧的圖表設計,得到了衆多開發者的認可。python結合了echarts於是誕生了pyecharts。首先安裝pyecharts庫。每個圖形採用一個類來表示。

from pyecharts.charts import Funnel漏斗圖
from pyecharts.charts import Liquid水球圖
from pyecharts.charts import  Gauge儀表盤圖
from pyecharts.charts import Geo地圖
from pyecharts.charts import Scatter  # 導入散點圖
from pyecharts.charts import Line     # 導入折線圖
from pyecharts.charts import Pie      # 導入餅圖
from pyecharts.charts import Geo      # 導入地圖


"下面繪製的是:正弦曲線的散點圖"

from pyecharts.charts import Scatter
import numpy as np
設置x軸y軸數據
x = np.linspace(0,2 * np.pi,100)
y = np.sin(x)

(
調用類
 Scatter() 
添加x軸
 .add_xaxis(xaxis_data=x)
添加y軸
 .add_yaxis(series_name="散點圖",y_axis=y)
).render_notebook()#直接在jupyter notebook運行顯示

在這裏插入圖片描述

from pyecharts.charts import Bar
from pyecharts import options as opts

#//設置行名
columns = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
#//設置數據
data1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
data2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]
#//設置柱狀圖的主標題與副標題

#//添加柱狀圖的數據及配置項
# bar.add("降水量", columns, data1, mark_line=["average"], mark_point=["max", "min"])
# bar.add("蒸發量", columns, data2, mark_line=["average"], mark_point=["max", "min"])
bar=(
     Bar()
         .add_xaxis(xaxis_data=columns)
         .add_yaxis("降雨量", y_axis=data1)
         .add_yaxis("增髮量", y_axis=data2)
         .set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副標題"))
     )
bar.render()
#原文鏈接https://www.jianshu.com/p/554d64470ec9

在這裏插入圖片描述

餅圖

from pyecharts.charts import Pie
from pyecharts import options as opts

columns = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
#//設置數據
data1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
data2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]



pie = (
        Pie()
        	# 以[(lable,value),(lable,value),(lable,value)......]形式傳入數據。
            .add("餅圖", list(z for z in zip(columns, data1)))
            .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
    )
pie.render('餅圖.html')


普通方式畫餅圖
from pyecharts.charts import Pie
import pyecharts.options as opts
 
num = [110, 136, 108, 48, 111, 112, 103]
lab = ['哈士奇', '薩摩耶', '泰迪', '金毛', '牧羊犬', '吉娃娃', '柯基']
x = [(i, j)for i, j in zip(lab, num)]
print(x)
 
pie = Pie(init_opts=opts.InitOpts(width="700px",height="300px"))
pie.add(series_name='',data_pair=[(i, j)for i, j in zip(lab, num)])
pie.render_notebook()

在這裏插入圖片描述

折線圖

from pyecharts.charts import Line
from pyecharts import options as opts

columns = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
#//設置數據
data1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
data2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]

line=(
#調用類
Line()
#添加x軸
 .add_xaxis(xaxis_data=columns)
#添加y軸
 .add_yaxis(series_name="折線圖1",y_axis=data1)
 .add_yaxis(series_name="折線圖2",y_axis=data2)
)
line.render('zhexiantu.html')



在這裏插入圖片描述
雷達圖



from pyecharts.charts import Radar
radar = Radar()
#//由於雷達圖傳入的數據得爲多維數據,所以這裏需要做一下處理
radar_data1 = [[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]]
radar_data2 = [[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]]
#//設置column的最大值,爲了雷達圖更爲直觀,這裏的月份最大值設置有所不同
schema = [
    ("Jan", 5), ("Feb",10), ("Mar", 10),
    ("Apr", 50), ("May", 50), ("Jun", 200),
    ("Jul", 200), ("Aug", 200), ("Sep", 50),
    ("Oct", 50), ("Nov", 10), ("Dec", 5)
]
#//傳入座標
radar.add_schema(schema)
radar.add("降水量",radar_data1)
#//一般默認爲同一種顏色,這裏爲了便於區分,需要設置item的顏色
radar.add("蒸發量",radar_data2,color="#1C86EE")
radar.render()

#學會看源碼真的非常重要,因爲版本在不斷更新

在這裏插入圖片描述
地圖熱力圖


import pandas as pd
from pyecharts.charts import Pie, Bar, Map, WordCloud
from pyecharts import options as opts


stop_words_txt = '過濾詞.txt'  # 過濾詞
df = pd.read_excel('zhoujielun1.xlsx')  # 讀取標準數據

# df.title	# df.title等同於df['title'] ,獲取title列的所有內容
# df['title'].values # 獲取title列的值
# df.title.value_counts()	# 查看title列的每個不同值在該列有多少重複值
# df.title.value_counts().items()	# 查看title列的每個不同值在該列有多少重複值,以元組輸出
# df.title.reset_index() # 可以還原索引,重新變爲默認的整型索引
# df.iterrows()	# 獲取文檔所有行,以元組形式輸出



# df.location.value_counts().items()獲取location列的每個不同值在該列有多少重複值
store_location_num_tuple = df.location.value_counts().items()
store_location_num = (dict(store_location_num_tuple))
# {'廣東': 2426, '上海': 560, '浙江': 435, '福建': 240......}

map_ = (
    Map()
        # 添加標題,傳入列表數據[('廣東', 2426), ('上海', 560), ('浙江', 435)...]
        # 'china爲中國地圖
        .add("中國地圖", [(data) for data in store_location_num.items()], "china")
        .set_global_opts(
        title_opts=opts.TitleOpts(title="演唱會地點分佈熱力圖(連續型)"),
        visualmap_opts=opts.VisualMapOpts(max_=2427)) #'這裏設置最大值,如果超過則不顯示'
)
map_.render('演唱會.html')	#

在這裏插入圖片描述

詞雲圖

import pandas as pd
from pyecharts.charts import Pie, Bar, Map, WordCloud
import jieba.analyse
from pyecharts import options as opts
from pyecharts.faker import Faker

from pyecharts.globals import ThemeType
from pyecharts.globals import SymbolType


stop_words_txt = 'stopword.txt'  # 過濾詞
df = pd.read_excel('douban2.xlsx')  # 讀取標準數據


jieba.analyse.set_stop_words(stop_words_txt)  # 載入停用詞,即過濾詞
    # 'topK爲返回權重最大的關鍵詞,默認值爲20,withWeight爲返回權重值,默認爲False'
keyword_list = jieba.analyse.textrank(' '.join(df.pinglun), topK=88, withWeight=True)

# 1. 高頻詞彙詞雲
word_cloud = (
    WordCloud()
        # '傳入列表,word_size_range爲字體大小,shape爲詞雲的形狀'
        .add("", keyword_list, word_size_range=[15, 100], shape=SymbolType.DIAMOND)
        .set_global_opts(title_opts=opts.TitleOpts(title="周董歌曲名詞雲圖"))
)
word_cloud.render('詞雲圖.html')  #'默認在當前目錄生成一個render.html,也可以自定義文件名稱'

在這裏插入圖片描述

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