一文学会炫酷图表利器pyecharts!

说到数据分析,肯定离不开数据的可视化,毕竟图表比冷冰冰的数字更加直观,老板们只想一眼就能看出趋势和结论。

https://pyecharts.org/#/zh-cn/quickstart

今天我们就聊一聊 pyecharts 中几种常用的图表。


pyecharts的安装

pip install pyecharts

有兴趣的小伙伴们也可以看看我之前的可视化案例

古天乐的吕布有多猛?Python爬虫可视化告诉你!

Python实战|腾讯招聘你干什么?python可视化告诉你

Python实战| 9383字手把手教你使用多线程爬取瓜子二手车并且可视化展示!

爬虫+数据可视化选大学,小学妹直呼牛X


导入模块

使用到的相关库如下:

frompyecharts.chartsimportBar

frompyecharts.chartsimportPie

frompyecharts.chartsimportLine

frompyechartsimportoptionsasopts

frompyecharts.chartsimportEffectScatter

frompyecharts.globalsimportSymbolType

frompyecharts.chartsimportGrid

frompyecharts.chartsimportWordCloud

frompyecharts.chartsimportMap

数据这里我们以之前瓜子二手车和高校排行数据为例,有兴趣的小伙伴可以参考:

python实战| 二手车难买?手把手带你爬取瓜子二手车-二级页面

爬虫+数据可视化选大学,小学妹直呼牛X

我们先使用pandas导入数据,关于pandas的技巧大家可以参考:

让人无法拒绝的pandas技巧,简单却好用到爆!

柱状图

数据准备

pd_data = pd.read_excel('瓜子二手车.xlsx')

pd.set_option('display.max_columns',None)# 显示完整的列

pd.set_option('display.max_rows',None)# 显示完整的行

pd.set_option('display.expand_frame_repr',False)# 设置不折叠数据

print(pd_data.head())

# 统计 过户分类 以及对应次数

trans_count = pd_data['过户情况'].value_counts()

# 针对于过户情况的分类

x_data = trans_count.index.tolist()

# 分类后各组数据的统计

y_data = trans_count.tolist()

print(x_data)

print(y_data)

'''

['1次过户', '0次过户', '3次过户']

[10, 8, 1]

'''

绘图

# 柱状图

bar = Bar()

bar.add_xaxis(x_data)

bar.add_yaxis("过户次数", y_data)

bar.set_global_opts(title_opts=opts.TitleOpts(title="Bar - 二手车过户展示图"))

bar.render('二手车过户展示图.shtml')


当然有时候还可以在一个柱状图中添加多个 y 轴记录,实现多个柱状对比,只需调用多一次 add_yaxis 即可。

当然pyecharts还支持链式调用,实现的功能一致,代码如下:

# 柱状图

z_data = [22,12,18]

bar = (

Bar()

.add_xaxis(x_data)

.add_yaxis("20年过户次数", y_data)

.add_yaxis("21年过户次数", z_data)

.set_global_opts(title_opts=opts.TitleOpts(title="Bar - 二手车过户对比展示图"))

)

bar.render('二手车对比过户展示图.shtml')

有时候,柱状图太高不方便看,我们还可以将 x 轴和 y 轴互换,生成横向的柱状图。多柱状图和 xy 轴互换不冲突,可叠加使用。

# 柱状图

z_data = [22,12,18]

bar = (

Bar()

.add_xaxis(x_data)

.add_yaxis("20年过户次数", y_data)

.add_yaxis("21年过户次数", z_data)

.reversal_axis()

.set_global_opts(title_opts=opts.TitleOpts(title="Bar - 二手车过户横向对比展示图"))

)

bar.render('二手车横向对比过户展示图.shtml')

饼状图

饼状图也是使用频率很高的图表之一,尤其是适用于百分比类的图,可以很直观的看出来各个类别所占据总体份额的比例。

数据准备

pd_data = pd.read_excel('全国高校数据.xlsx')

pd.set_option('display.max_columns',None)# 显示完整的列

pd.set_option('display.max_rows',None)# 显示完整的行

pd.set_option('display.expand_frame_repr',False)# 设置不折叠数据

type_name = pd_data['type_name'].value_counts()

type_name1 = type_name.index.tolist()# 大学类型分布图

type_name2 = type_name.tolist()# 大学类型数量

绘图

# 绘制饼图

c = (

Pie()

.add("", [list(z)forzinzip(type_name1, type_name2)])

.set_global_opts(title_opts=opts.TitleOpts(title="大学类型分布图"))

.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))

.render("大学类型.shtml")

)

环形饼图

c = (

Pie()

.add(

"",

[list(z)forzinzip(type_name1, type_name2)],

radius=["40%","55%"],

label_opts=opts.LabelOpts(

position="outside",

formatter="{a|{a}}{abg|}\n{hr|}\n {b|{b}: }{c}  {per|{d}%}  ",

background_color="#eee",

border_color="#aaa",

border_width=1,

border_radius=4,

rich={

"a": {"color":"#999","lineHeight":22,"align":"center"},

"abg": {

"backgroundColor":"#e3e3e3",

"width":"100%",

"align":"right",

"height":22,

"borderRadius": [4,4,0,0],

},

"hr": {

"borderColor":"#aaa",

"width":"100%",

"borderWidth":0.5,

"height":0,

},

"b": {"fontSize":16,"lineHeight":33},

"per": {

"color":"#eee",

"backgroundColor":"#334455",

"padding": [2,4],

"borderRadius":2,

},

},

),

)

.set_global_opts(title_opts=opts.TitleOpts(title="高校类型对比饼图"))

.render("高校类型对比饼图.shtml")

)

饼图2

data_pair = [list(z)forzinzip(type_name1, type_name2)]

data_pair.sort(key=lambdax: x[1])

(

Pie(init_opts=opts.InitOpts(width="1600px", height="800px", bg_color="#2c343c"))

.add(

series_name="访问来源",

data_pair=data_pair,

rosetype="radius",

radius="55%",

center=["50%","50%"],

label_opts=opts.LabelOpts(is_show=False, position="center"),

)

.set_global_opts(

title_opts=opts.TitleOpts(

title="高校饼图",

pos_left="center",

pos_top="20",

title_textstyle_opts=opts.TextStyleOpts(color="#fff"),

),

legend_opts=opts.LegendOpts(is_show=False),

)

.set_series_opts(

tooltip_opts=opts.TooltipOpts(

trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)"

),

label_opts=opts.LabelOpts(color="rgba(255, 255, 255, 0.3)"),

)

.render("高校饼图.html")

)

折线图

折线图通常是来展示数据在不同时间段的走势,例如比较经典的股市 K 线图就是折线图的一种。

pd_data = pd.read_excel('全国高校数据.xlsx')

type_name = pd_data['type_name'].value_counts()

type_name1 = type_name.index.tolist()# 理工 vs 综合

type_name2 = type_name.tolist()# 理工 vs 综合对应数量

print(type_name1)

print(type_name2)

绘图

# 折线图

line = (

Line()

.add_xaxis(type_name1)

.add_yaxis('china', type_name2)

.set_global_opts(title_opts=opts.TitleOpts(title="高校人气值"))

)

line.render('高校人气值.shtml')

同样,和柱状图类似,折线图也可以在一个图中添加多个 y 轴记录。

line = (

Line()

.add_xaxis(type_name1)

.add_yaxis('2020', type_name2)

.add_yaxis('2021', z_data)

.set_global_opts(title_opts=opts.TitleOpts(title="双折线图"))

)

line.render('高校人气值双折线图.shtml')

当然了还有阶梯折线图,同样可以实现

line = (

Line()

.add_xaxis(type_name1)

.add_yaxis('2020', type_name2, is_step=True)

.add_yaxis('2021', z_data, is_step=True)

.set_global_opts(title_opts=opts.TitleOpts(title="阶梯折线图"))

)

line.render('高校人气值阶梯图.shtml')

地图

有时我们会希望将数据展示在地图上,比如全国疫情状况,全国各省份人口数据,微信好友各省份分布等。

数据准备

pd_data = pd.read_excel('全国高校数据.xlsx')

school_num = pd_data.province_name.value_counts().sort_values()

school_num1 = school_num.index.tolist()

school_num2 = school_num.values.tolist()

print(school_num1)

print(school_num2)

绘图

map = (

Map()

.add("", [list(z)forzinzip(school_num1, school_num2)],"china")

.set_global_opts(

title_opts=opts.TitleOpts(title="中国地图示例"),

visualmap_opts=opts.VisualMapOpts(max_=5, is_piecewise=True),

)

)

map.render('全国高校分布图.shtml')

漏斗图

数据准备

pd_data = pd.read_excel('./全国高校数据.xlsx')

# 去除 ’w‘

pd_data.loc[:,'view_total1'] = pd_data['view_total'].str.replace('w','').astype('float64')

# 划分价格区间

pd_data['view_total区间'] = pd.cut(pd_data['view_total1'], [0,500,1000,1500,2000,2500,3000,3500],

labels=['0-500','500-1000','1000-1500','1500-2000','2000-2500','2500-3000',

'>3000'])

# 统计数量

popular = pd_data['view_total区间'].value_counts()

popular1 = popular.index.tolist()# 人气值分类

popular2 = popular.tolist()# 人气值分类对应数量'''

print(popular1)

print(popular2)

绘图

c = (

Funnel()

.add(

"高校",

[list(z)forzinzip(popular1, popular2)],

label_opts=opts.LabelOpts(position="inside"),

)

.set_global_opts(title_opts=opts.TitleOpts(title="人气值漏斗图"))

.render("人气值漏斗图.shtml")

)

仪表盘

c = (

Gauge()

.add(

"及格指标",

[("及格率",75.5)],

axisline_opts=opts.AxisLineOpts(

linestyle_opts=opts.LineStyleOpts(

color=[(0.3,"#67e0e3"), (0.7,"#37a2da"), (1,"#fd666d")], width=30

)

),

)

.set_global_opts(

title_opts=opts.TitleOpts(title="期末成绩及格率"),

legend_opts=opts.LegendOpts(is_show=False),

)

.render("成绩及格率.html")

)

水滴图

c = (

Liquid()

.add("lq", [0.45], is_outline_show=False)

.set_global_opts(title_opts=opts.TitleOpts(title="完成率"))

.render("liquid_without_outline.html")

)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容