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,也可以自定义文件名称'

在这里插入图片描述

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