百度360必应搜狗淘宝本站头条
当前位置:网站首页 > SEO教程 > 正文

全文3000字,Pyecharts制作可视化大屏全流程

gaoyangw 2025-02-26 12:05 20 浏览 0 评论

作者:俊欣

来源:关于数据分析与可视化

今天我们就来说说如何用Pyecharts模块来制作炫酷的可视化大屏,最后的效果如下

步骤如下:

  • 分别使用Pyecharts制作各类图表,包括柱状图、地图、饼图等等
  • 使用Pyecharts当中的组合图表功能,将所有图片拼接在一张html文件中进行展示

数据的来源

这次我们使用的数据是虚构的某超市2021年第一季度的订单数据,总共是有1000条,

df.info()

output


RangeIndex: 1000 entries, 0 to 999
Data columns (total 17 columns):
 #   Column  Non-Null Count  Dtype         
---  ------  --------------  -----         
 0   订单编号    1000 non-null   object        
 1   分支      1000 non-null   object        
 2   省份      1000 non-null   object        
 3   顾客类型    1000 non-null   object        
 4   性别      1000 non-null   object        
 5   商品类型    1000 non-null   object        
 6   单价      1000 non-null   float64       
 7   数量      1000 non-null   int64         
 8   Tax 5%  1000 non-null   float64       
 9   总价      1000 non-null   float64       
 10  日期      1000 non-null   datetime64[ns]
 .......  
dtypes: datetime64[ns](1), float64(7), int64(1), object(8)
memory usage: 132.9+ KB

其中顾客的类型有普通顾客与会员,性别有男性与女性,剩下的还有包括商品类型、购买时间、支付方式、各个商品的毛利率等数据,

数据可视化

接下来我们开始各个图表的绘制,我们先来看饼图的绘制,代码并不复杂,首先我们对“商品类型”这一列的数据进行统计

products_type_index = df["商品类型"].value_counts().index.tolist()
products_type_values = df["商品类型"].value_counts().values.tolist()

然后再调用Pyecharts()模块中的Pie()实例进行图表的绘制

def pie_chart_2():
    
    c = (
        Pie(init_opts=opts.InitOpts(chart_id=4, bg_color='#1C1C1C',
                                    theme=ThemeType.INFOGRAPHIC))
        .add("", [list(z) for z in zip(products_type_index,
                                       products_type_values)])
        .set_global_opts(title_opts=opts.TitleOpts(title="商品类型分布图",
                                                   title_textstyle_opts=opts.TextStyleOpts(font_size=25, color='#FFFFFF')),
                         legend_opts=opts.LegendOpts(orient="vertical",
                                                     pos_left="5%",
                                                     pos_top="10%"))
        .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
    )

    return c
    
if __name__ == "__main__":
    map = map_chart()
    map.render("4.html")

output

另外,我们也看到了单张图片当中有两张饼图的情况,这是使用了Pyecharts()模块当中的Grid()实例,将若干张绘制完成的图表遵从一定的顺序来进行组合

grid = (
        Grid(init_opts=opts.InitOpts(width='1000px', height='600px',
                                     chart_id=3, bg_color='#1C1C1C'))
        .add(c_1, grid_opts=opts.GridOpts(pos_left="60%"))
        .add(c_2, grid_opts=opts.GridOpts(pos_right="50%"))
    )

地图

同样地,我们将不同省份的数据给筛选出来之后,然后进行图表的绘制

city_index = df["省份"].value_counts().index.tolist()
city_values = df["省份"].value_counts().values.tolist()

地图的绘制用的是Pyecharts模块当中的Map()实例,可以看到顾客几乎都分布在北京、浙江以及上海这几个地方

def map_chart():
    c = (
        Map(init_opts=opts.InitOpts(chart_id=2,
                                    bg_color='#1C1C1C'))
            .add("商家A", [list(z) for z in zip(city_index,
                                              city_values)], "china")
            .set_global_opts(
            title_opts=opts.TitleOpts(title="顾客在全国的分布图",
                                      title_textstyle_opts=opts.TextStyleOpts(font_size=25,
                                                                              color='#FFFFFF')),
            visualmap_opts=opts.VisualMapOpts(max_=250),
        )
    )
    return c
    
if __name__ == "__main__":
    map = map_chart()
    map.render("2.html")

output

直方图

我们针对的是购买时间,看一下哪些购买时间段的人会比较多

hour_index = df["小时"].value_counts().index.tolist()
hour_index_str = [str(hour_ind) + "时" for hour_ind in hour_index]
hour_values = df["小时"].value_counts().values.tolist()

调用Bar()实例进行绘制图表

def bar_chart():
    c = (
        Bar(init_opts=opts.InitOpts(chart_id=5, bg_color='#1C1C1C',
                                    theme=ThemeType.CHALK))
            .add_xaxis(hour_index_str)
            .add_yaxis("商家A", hour_values)
            .set_global_opts(title_opts=opts.TitleOpts(title="购物的时间分布",
                                                       subtitle="购物时间",
                                                       title_textstyle_opts=opts.TextStyleOpts(font_size=25, color='#FFFFFF')))
    )
    return c
    
if __name__ == "__main__":
    map = map_chart()
    map.render("5.html")

output

Pyecharts组合图表

将绘制出来的若干份图表组合到一块儿,总共有这几种方式

  • Grid: 并行/垂直放置多张图
  • Page: 顺序多图
  • Tab: 多个页面多图
  • Timeline: 时间轴循环轮播多图

我们使用的是Page()示例来顺序展示多张图表,先实例化该对象

page = Page(layout=Page.DraggablePageLayout, page_title="基于Pyecharts的销售数据大屏")

之所以用DraggablePageLayout属性是为了调整成我们所想要的布局,然后将我们所绘制的图表一一添加

page.add(
    title(),
    map_chart(),
    pie_chart(),
    pie_chart_2(),
    bar_chart(),
)

page.render('test_2.html')

最后生成一个test_2.html的文件,然后我们将布局调整成我们想要的结果

对图片布局完成之后,要记得点击左上角的save config按钮对布局文件进行保存。之后本地会生成一个chart_config.json文件,然后运行下面的代码

page.save_resize_html('test_2.html', cfg_file='chart_config.json', dest='可视化大屏.html')

打开重新生成的可视化大屏.html,便是新的内容

相关推荐

手把手教你30分钟搭建企业官网:零基础也能搞定的傻瓜式教程

想给公司做个网站展示产品,又怕被程序员忽悠花冤枉钱?今天教你个绝招——用现成的网站模板"拼"网站!就像搭乐高一样简单,全程鼠标点点就能搞定,连代码都不用碰。第一步:挑个合身的"...

以Twig模板为例浅学一手SSTI(twig中文)

什么是SSTISSTI:开局一张图,姿势全靠ySSTI,即服务器端模板注入(Server-SideTemplateInjection)...

成功上岸腾讯运营,教你如何写校招简历?

产品策划/运营的校招简历应该怎么写?作者从自身实际情况出发,总结分享了相关经验,希望对你有用。写在前面红红火火恍恍惚惚,本人是一位2020届本科毕业生,校招意向互联网产品类。此前有过产品相关的项目&a...

50个精彩的响应式HTML和CSS模板:上

自由设计固然是一件好事儿,然而经常关注先进的设计作品,久而久之,就会帮你节省更多的布景设计时间,视觉效果也明显会更为专业,可以参考以下这些响应式HTML/CSS模板,实用性高,你肯定能从中汲取不...

你的人生,有多少“模板”?(扣好人生第一粒扣子手抄报模板可打印)

你浏览网页时,注意过那些海报吗?海报不仅仅是广告,还可以传递新闻信息,也常常摘要一些金句热词。作为一种新的传播形式,海报传递信息,简洁快捷,鲜明突出,往往有意想不到的效果。然而,做一张网络海报并不容易...

5款值的推荐的高效工具软件(高效工作软件哪个好用)

现在,有很多实用的工具和软件可以帮助我们更高效地完成各种任务。以下是几个值得推荐的工具和软件,能够极大地提高我们的工作效率。1.矢量设计——AffinityDesigner...

广州津虹YY直播成立“麦絮”厂牌 打造直播界短剧新标杆

3月31日,广州津虹YY直播在广州举办了生态大会暨麦絮短剧星光点映礼,宣布正式成立短剧厂牌“麦絮”,旨在宣传和推广自制短剧。广州津虹YY直播计划聚焦生态故事,与旗下公会、主播,以及百度、七猫、爱奇艺、...

广州哪家小程序开发公司比较靠谱?这三家值得推荐

小程序已成为企业数字化的重要工具,广州作为互联网产业重镇,小程序开发公司众多。如何选择靠谱的服务商?本文推荐三家实力突出的公司,供您参考。一、广州聆科网络技术有限公司本土老牌技术团队,专注小程序定制开...

西北嚎狼解析SEOer如何写好优质的软文

什么是软文?狭义:指企业花钱在报纸或杂志等宣传载体上刊登的纯文字性的广告。广义:企业通过策划在杂志或网络等宣传载体上刊登的提升企业品牌形象和知名度。软文:以摆事实讲道理的方式使用使消费者走进企业设定的...

花了15分钟答题,成功成为内容品鉴官了

午后的阳光在手机屏上碎成光斑,我盯着弹窗里闪烁的「恭喜」二字,指尖悬停在半空忘了动作。第三次了,那些被题库支配到深夜的郁结,此刻正顺着喉咙往上涌,最终化成一声压在胸腔里的叹息——这次终究是不同的。(一...

怎样写出能突破一切封锁的好广告(怎样写出能突破一切封锁的好广告作文)

每天拿出一分钟来学习,你得生命会更加精彩,我是洪雨有个朋友跟我讲,“现在发广告真难啊,发个链接就被删了,有时候你起的名字里带点广告都不行,引流真难啊……洪雨为什么你几乎可以在任何地方做广告,是怎么做到...

你能看出几个广告?软文分享《一个程序员的一天》

从电视广告到平面广告,再到各个banner、病毒视频、软文、HTML5等等等,各家公司为了给自家的产品做广告费尽了心思,无所不用其极。小编近日看见一篇文章,一时间竟没反应出这是一篇软文!只能说6666...

中小企业发稿总被拒?资深编辑教你3招软文发布轻松过审

中小企业新闻媒体发稿经常被拒怎么办?资深编辑教你3招软文发布轻松过审:发稿流程和投稿要点、注意事项分享...

「源生活」那些让人惊喜的中秋节软文广告

说起中秋节,我相信很多人会想起来很多物品,小编想到的是:水果,月亮,月饼,鲜花。此外还有数不尽好广告,好文案。当然了中秋节作为下半年的第一个大节日,显得就比较重要了。特别是又是传统佳节,又是法定节假日...

软文案例标题和内容怎么写(软文优秀案例)

1:软文营销专家南昌牛推科技(媒介星软文平台)全网营销+一对一服务成长软文案例标题和内容怎么写?软文营销专家南昌牛推科技(媒介星软文平台)全网营销+一对一服务成长,从业务经验出发分享一些心得。软文标题...

取消回复欢迎 发表评论: