首页 > 编程语言 >python做的交互式动态大图,真漂亮!

python做的交互式动态大图,真漂亮!

时间:2024-11-11 13:15:46浏览次数:3  
标签:map show python 大图 pos 交互式 year data opts

   精品专题:

01.《C语言从不挂科到高绩点》课程详细笔记

https://blog.csdn.net/yueyehuguang/category_12753294.html?spm=1001.2014.3001.5482

02. 《SpringBoot详细教程》课程详细笔记

https://blog.csdn.net/yueyehuguang/category_12789841.html?spm=1001.2014.3001.5482

03.《SpringBoot电脑商城项目》课程详细笔记

https://blog.csdn.net/yueyehuguang/category_12752883.html?spm=1001.2014.3001.5482

04.《VUE3.0 核心教程》课程详细笔记 

https://blog.csdn.net/yueyehuguang/category_12769996.html?spm=1001.2014.3001.5482

05. 《SSM详细教程》课程详细笔记 

https://blog.csdn.net/yueyehuguang/category_12806942.html?spm=1001.2014.3001.5482

================================

||     持续分享系列教程,关注一下不迷路 ||

||         视频教程,小破站:墨轩大楼        ||

================================

        Hello各位同学,我们又见面了。很多情况下我们做数据可视化的时候,需要绘制大量的图表,今天我将教大家用python绘制一些好看的图表。

        用pandas读取数据,通过整合数据格式,分别用pyecharts绘制地图、柱状图、饼图,具体内容如下:

1.绘制地图

import pyecharts.options as opts
from pyecharts.globals import ThemeType
from pyecharts.commons.utils import JsCode
from pyecharts.charts import Timeline, Grid, Bar, Map, Pie
import pandas as pd
data = pd.read_excel('全国各省财政收入.xlsx',index_col=0)
years=list(data.keys()) #获取列名
citys=list(data.index)    #获取索引行名
citys=[city.replace('省','').replace('市','').replace('自治区','') for city in citys]
datas=[]
for y in years:
    dict_year={}
    dict_year['time']=y
    data_list=[[i,j] for i,j in zip(citys,list(data[y]))]
    dict_year['data']=sorted(data_list, key=(lambda x: x[1]),reverse=True)
    datas.append(dict_year)
map_data = [i["data"] for i in datas if i["time"]==2010][0]
min_data, max_data = (
        min([d[1] for d in map_data]),
        max([d[1] for d in map_data]),
    )
map_chart = (
        Map(init_opts=opts.InitOpts(theme=ThemeType.DARK))
        .add(
            series_name="",
            data_pair=map_data,
            label_opts=opts.LabelOpts(is_show=False),
            is_map_symbol_show=False,
        )
        .set_global_opts(
            title_opts=opts.TitleOpts(
                title="2000年以来中国各省GDP排名变化情况",
                subtitle="GDP单位:亿元",
                pos_left="center",
                pos_top="top",
                title_textstyle_opts=opts.TextStyleOpts(
                    font_size=25, color="rgba(123,104,238, 0.9)"
                ),
            ),
            visualmap_opts=opts.VisualMapOpts(
                is_calculable=True,
                dimension=0,
                pos_left="10",
                pos_top="center",
                range_text=["High", "Low"],
                range_color=["lightskyblue", "yellow", "orangered"],
                textstyle_opts=opts.TextStyleOpts(color="#ddd"),
                min_=min_data,
                max_=max_data,
            ),
        )
    )
map_chart.render_notebook()

2.绘制柱状图

map_data = [i["data"] for i in datas if i["time"]==y][0]
min_data, max_data = (
    min([d[1] for d in map_data]),
    max([d[1] for d in map_data]),
)
bar_x_data = [x[0] for x in map_data]
bar_y_data = [x[1] for x in map_data]
bar = (
        Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK))
        .add_xaxis(xaxis_data=bar_x_data)
        .add_yaxis(
            series_name="",
            yaxis_data=bar_y_data,
            label_opts=opts.LabelOpts(
                is_show=True, position="right", formatter="{b}: {c}"
            ),
        )
        .reversal_axis()
        .set_global_opts(
            title_opts=opts.TitleOpts(
                title="2000年以来中国各省GDP排名变化情况",
                subtitle="GDP单位:亿元",
                pos_left="center",
                pos_top="top",
                title_textstyle_opts=opts.TextStyleOpts(
                    font_size=25, color="rgba(123,104,238, 0.9)"
                ),
            ),
            xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(is_show=False)),
            yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(is_show=False)),
            tooltip_opts=opts.TooltipOpts(is_show=False),
            visualmap_opts=opts.VisualMapOpts(
                is_calculable=True,
                dimension=0,
                pos_left="10",
                pos_top="center",
                range_text=["High", "Low"],
                range_color=["lightskyblue", "yellow", "orangered"],
                textstyle_opts=opts.TextStyleOpts(color="#ddd"),
                min_=min_data,
                max_=max_data,
            ),
        )
    )
bar.render_notebook()

3.绘制饼图

pie_data = [[x[0], x[1]] for x in map_data]
percent_sum = sum([x[1] for x in map_data])
rest_value = 0
for d in map_data:
    rest_percent = 100.0
    rest_percent = rest_percent - percent_sum
    rest_value = d[1] * (rest_percent / d[1])
pie = (
    Pie(init_opts=opts.InitOpts(theme=ThemeType.DARK))
    .add(
        series_name="",
        data_pair=pie_data,
        radius=["12%", "20%"],
        center=["50%", "50%"],
        itemstyle_opts=opts.ItemStyleOpts(
            border_width=1, border_color="rgba(0,0,0,0.3)"
        ),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(
                title="2000年以来中国各省GDP排名变化情况",
                subtitle="GDP单位:亿元",
                pos_left="center",
                pos_top="top",
                title_textstyle_opts=opts.TextStyleOpts(
                    font_size=25, color="rgba(123,104,238, 0.9)"
                ),
            ),
        tooltip_opts=opts.TooltipOpts(is_show=True, formatter="{b} {d}%"),
        legend_opts=opts.LegendOpts(is_show=False),
    )
)
pie.render_notebook()

二、绘制动图

在基本图形的基础上,引入timeline函数,绘制相应动态图形:

1.绘制动态地图

def get_year_chart(year: int):
    map_data = [i["data"] for i in datas if i["time"]==year][0]
    min_data, max_data = (
            min([d[1] for d in map_data]),
            max([d[1] for d in map_data]),
        )
    map_chart = (
            Map(init_opts=opts.InitOpts(theme=ThemeType.DARK))
            .add(
                series_name="",
                data_pair=map_data,
                label_opts=opts.LabelOpts(is_show=False),
                is_map_symbol_show=False,
            )
            .set_global_opts(
                title_opts=opts.TitleOpts(
                    title="{}年以来中国各省GDP排名情况".format(year),
                    subtitle="GDP单位:亿元",
                    pos_left="center",
                    pos_top="top",
                    title_textstyle_opts=opts.TextStyleOpts(
                        font_size=25, color="rgba(123,104,238, 0.9)"
                    ),
                ),
                visualmap_opts=opts.VisualMapOpts(
                    is_calculable=True,
                    dimension=0,
                    pos_left="10",
                    pos_top="center",
                    range_text=["High", "Low"],
                    range_color=["lightskyblue", "yellow", "orangered"],
                    textstyle_opts=opts.TextStyleOpts(color="#ddd"),
                    min_=min_data,
                    max_=max_data,
                ),
            )
        )
    return map_chart
time_list = list(range(2000,2020))
timeline = Timeline(
    init_opts=opts.InitOpts(width="1000px", height="800px", theme=ThemeType.DARK)
)
for y in time_list:
    g = get_year_chart(year=y)
    timeline.add(g, time_point=str(y))

timeline.add_schema(
    orient="vertical",
    is_auto_play=True,
    is_inverse=True,
    play_interval=500,
    pos_left="null",
    pos_right="5",
    pos_top="20",
    pos_bottom="20",
    width="50",
    label_opts=opts.LabelOpts(is_show=True, color="#fff"),
)
timeline.render_notebook()

2.绘制动态柱状图

def get_year_chart(year: int):
    map_data = [i["data"] for i in datas if i["time"]==year][0]
    min_data, max_data = (
        min([d[1] for d in map_data]),
        max([d[1] for d in map_data]),
    )
    bar_x_data = [x[0] for x in map_data]
    bar_y_data = [x[1] for x in map_data]
    bar = (
            Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK))
            .add_xaxis(xaxis_data=bar_x_data)
            .add_yaxis(
                series_name="",
                yaxis_data=bar_y_data,
                label_opts=opts.LabelOpts(
                    is_show=True, position="right", formatter="{b}: {c}"
                ),
            )
            .reversal_axis()
            .set_global_opts(
                title_opts=opts.TitleOpts(
                    title="2000年以来中国各省GDP排名变化情况",
                    subtitle="GDP单位:亿元",
                    pos_left="center",
                    pos_top="top",
                    title_textstyle_opts=opts.TextStyleOpts(
                        font_size=25, color="rgba(123,104,238, 0.9)"
                    ),
                ),
                xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(is_show=False)),
                yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(is_show=False)),
                tooltip_opts=opts.TooltipOpts(is_show=False),
                visualmap_opts=opts.VisualMapOpts(
                    is_calculable=True,
                    dimension=0,
                    pos_left="10",
                    pos_top="center",
                    range_text=["High", "Low"],
                    range_color=["lightskyblue", "yellow", "orangered"],
                    textstyle_opts=opts.TextStyleOpts(color="#ddd"),
                    min_=min_data,
                    max_=max_data,
                ),
            )
        )
    return bar
time_list = list(range(2000,2020))
timeline = Timeline(
    init_opts=opts.InitOpts(width="1000px", height="800px", theme=ThemeType.DARK)
)
for y in time_list:
    g = get_year_chart(year=y)
    timeline.add(g, time_point=str(y))

timeline.add_schema(
    orient="vertical",
    is_auto_play=True,
    is_inverse=True,
    play_interval=500,
    pos_left="null",
    pos_right="5",
    pos_top="20",
    pos_bottom="20",
    width="50",
    label_opts=opts.LabelOpts(is_show=True, color="#fff"),
)
timeline.render_notebook()

3.绘制动态饼图

def get_year_chart(year: int):
    map_data = [i["data"] for i in datas if i["time"]==year][0]
    min_data, max_data = (
        min([d[1] for d in map_data]),
        max([d[1] for d in map_data]),
    )
    pie_data = [[x[0], x[1]] for x in map_data]
    percent_sum = sum([x[1] for x in map_data])
    rest_value = 0
    for d in map_data:
        rest_percent = 100.0
        rest_percent = rest_percent - percent_sum
        rest_value = d[1] * (rest_percent / d[1])
    pie = (
        Pie(init_opts=opts.InitOpts(theme=ThemeType.DARK))
        .add(
            series_name="",
            data_pair=pie_data,
            radius=["12%", "20%"],
            center=["50%", "50%"],
            itemstyle_opts=opts.ItemStyleOpts(
                border_width=1, border_color="rgba(0,0,0,0.3)"
            ),
        )
        .set_global_opts(
            title_opts=opts.TitleOpts(
                    title="2000年以来中国各省GDP排名变化情况",
                    subtitle="GDP单位:亿元",
                    pos_left="center",
                    pos_top="top",
                    title_textstyle_opts=opts.TextStyleOpts(
                        font_size=25, color="rgba(123,104,238, 0.9)"
                    ),
                ),
            tooltip_opts=opts.TooltipOpts(is_show=True, formatter="{b} {d}%"),
            legend_opts=opts.LegendOpts(is_show=False),
        )
    )
    return pie
time_list = list(range(2000,2020))
timeline = Timeline(
    init_opts=opts.InitOpts(width="1000px", height="800px", theme=ThemeType.DARK)
)
for y in time_list:
    g = get_year_chart(year=y)
    timeline.add(g, time_point=str(y))

timeline.add_schema(
    orient="vertical",
    is_auto_play=True,
    is_inverse=True,
    play_interval=500,
    pos_left="null",
    pos_right="5",
    pos_top="20",
    pos_bottom="20",
    width="50",
    label_opts=opts.LabelOpts(is_show=True, color="#fff"),
)
timeline.render_notebook()

三、合并动图

最后,通过grid模块将三个图形合并到一起:

标签:map,show,python,大图,pos,交互式,year,data,opts
From: https://blog.csdn.net/yueyehuguang/article/details/143672456

相关文章

  • Python编程:从入门到实践(第3版)_练习10.5:访客薄
    编写一个while循环,提示用户输入其名字。收集用户输入的所有名字,将其写入guest_book.txt,并确保这个文件中的每条记录都独占一行。frompathlibimportPathpath=Path('guest_book.txt')contents="请输入你的姓名(最后一位请输入'q'):\n"guest_names=[]wh......
  • 各个语言的标准输入输出(C++,Python,Go,MATLAB)
    标准输入和输出C/C++cin,cout,getline()进行输入输出#include<bits/stdc++.h>usingnamespacestd;intmain(){//输入`1231231` inta,b,c; cin>>a>>b>>c; cout<<a<<b<<c<<endl;//输出1231231并换行(endl代表换行) //输入`......
  • 在PyCharm中打包Python项目并将其运行到服务器上的方法
    在PyCharm中打包Python项目并将其运行到服务器上的方法在PyCharm中打包Python项目并将其运行到服务器上的过程,可以分解为几个关键步骤:创建项目、设置项目依赖、打包项目、配置服务器环境、上传可执行文件到服务器以及运行项目。以下是一个详细的指南,包括完整的代码示例,这些代码可......
  • 用Python计算栅格数据的真实面积
    用Python计算栅格数据的真实面积在地理空间分析中,栅格数据的像素值通常代表某种属性,比如土地利用比例、植被覆盖率等。这些数据往往基于经纬度网格表示的比例值,而为了更直观地理解这些数据的空间意义,我们需要将这些比例值转化为实际面积(如平方米或公顷)。对于高分辨率的大尺寸栅......
  • python中常见的8种数据结构之一字典及其使用方法
    字典(Dictionary)是Python中常见的数据结构之一,用于存储一组配对的键(key)和值(value)。字典是可变的、无序的,并且键必须是唯一的。创建字典的方法有两种:使用花括号{}或使用内置的dict()函数。下面是一些常见的字典操作和方法:1.创建字典:my_dict={'key1':'value1','key2'......
  • 使用wxpython开发跨平台桌面应用,动态工具的创建处理
    在我们开发系统的时候,往往需要一个很容易理解功能的工具栏,工具栏是一个系统的快速入口,美观易用的工具栏是可以给系统程序增色不少的,本篇随笔介绍在使用wxpython开发跨平台桌面应用,工具栏的动态展现效果,以及多级工具栏显示等的创建处理过程。1、wxpython工具栏介绍在wxPython中......
  • python如何读取json文件
    在Python中读取JSON文件通常使用json模块,这是Python标准库的一部分,不需要额外安装。以下是读取JSON文件的基本步骤:打开JSON文件。使用json.load()函数将文件内容解析为Python对象(通常是字典或列表)。关闭文件。下面是一个具体的例子:pythonimportjson打开JSON文件withop......
  • Python 列表:数据处理的强大工具
    文章目录一、Python列表的基本概念二、Python列表的特性三、Python列表的操作方法四、Python列表在数据处理中的应用Python列表:数据处理的强大工具而在Python的众多数据结构中,列表(List)无疑是使用最为广泛的一种。一、Python列表的基本概念Python列表是一种有......
  • 京东商品详情,Python爬虫的“闪电战”
    在这个数字化的时代,我们每天都在和数据打交道,尤其是电商数据。想象一下,你是一名侦探,需要快速获取京东上某个商品的详细信息,但是没有超能力,怎么办?别担心,Python爬虫来帮忙!今天,我们就来一场幽默的“闪电战”,用Python快速获取京东商品详情。为什么选择Python做“武器”?选择Pytho......
  • Python爬虫快速获取JD商品详情:代码示例与技巧解析
    在当今这个信息爆炸的时代,数据成为了一种宝贵的资源。对于电商行业来说,获取商品详情信息是进行市场分析、价格比较、库存管理等重要环节的基础。本文将通过一个Python爬虫示例,展示如何快速获取(JD)商品的详情信息。为什么选择Python进行爬虫开发?Python作为一种高级编程语言,以......