使用echarts绘图

import pandas as pd
import numpy as np

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.charts import Pie
from pyecharts.charts import Geo
from pyecharts.globals import GeoType
from pyecharts.charts import Map
from pyecharts.globals import ThemeType  # 主题模块
# =============================================
# 柱状图
# 1 实例化,初始化画布:
bar = Bar()
# 2 绘图:
# (1)添加X轴坐标:
bar.add_xaxis(['衬衣', '毛衣', '领带', '裤子'])
# (2)添加y1轴坐标:(系列名称,系列对应的y轴的数据)
bar.add_yaxis('商家A', [114, 55, 27, 110])
# (3)添加y2轴坐标:(系列名称,系列对应的y轴的数据)
bar.add_yaxis('商家B', [57, 134, 129, 69])

# (4)图形的翻转,绘制水平柱状图
bar.reversal_axis()

# (5)系列配置项:LabelOpts:label的配置项,所有参数参照系列配置项中的LabelOpts的官方文档
bar.set_series_opts(
    label_opts=opts.LabelOpts(position='right')
)
# (6)全局配置项:所有参数参照全局配置项中官方文档
bar.set_global_opts(
    title_opts=opts.TitleOpts(title='厂家销量对比',
                              subtitle='python')
)

# (最后)生成HTML文件:
bar.render('柱状图.html')
# =======================================================

# (1)初始化
pie = Pie()
# (2)绘图
# 注意所有参数与官方文档对应:
pie.add('',
        data_pair=[('第一产业', 1000),
                   ('第二产业', 2000),
                   ('第三产业', 3000)],
        # radius=['50%','75%'],  # 环形图,内径50%,外径75%
        rosetype='area',  # 玫瑰图:area通过面积表示占比,radius通过半径表示占比
        )

# (3)添加标题
pie.set_global_opts(
    title_opts=opts.TitleOpts(
        title='产业饼图',
        subtitle='python'
    )
)
pie.render('饼图.html')

# ============================================

data_0120_ru = '孝感、黄冈、鄂州、荆州、黄石、襄阳'
data_0120_chu = '孝感、黄冈、荆州、襄阳、黄石、荆门、鄂州、随州、仙桃'
data_0121_ru = '孝感、黄冈、荆州、鄂州黄石'
data_0121_chu = '孝感、黄冈、荆州、襄阳、荆门、黄石、随州、鄂州、仙桃'
data_0122_ru = '孝感、黄冈、鄂州、荆州、咸宁、黄石'
data_0122_chu = '孝感、黄冈、荆州、襄阳、荆州、随州、宜昌、黄石、鄂州'
data_ru = [data_0120_ru, data_0121_ru, data_0122_ru]
data_chu = [data_0120_chu, data_0121_chu, data_0122_chu]
data_list_qianxi = []
# data_list_ru = []
for data_str in data_ru:
    data_list_qianxi.extend([[i, '武汉'] for i in data_str.split('、')])
for data_str in data_chu:
    data_list_qianxi.extend([['武汉', i] for i in data_str.split('、')])
# (1)实例化,画布设置:
geo=Geo(init_opts=opts.InitOpts(width='1200px',  # 修改宽度
                                height='650px',  # 修改高度
                                bg_color='#1f3b4d',  # 背景颜色
                                )
        )
# (2)指定地图类型
geo.add_schema(maptype='湖北',  # 地图类型:湖北省
               itemstyle_opts=opts.ItemStyleOpts(
                   color='#f97306',
                   border_color='#ffdf22'
                   )  # 修改地图背景颜色
               )
# (3)绘图
geo.add('',  # series_name;不想写,设置成空
        data_list_qianxi,
        type_=GeoType.LINES,  # 迁徙线的格式
        linestyle_opts=opts.LineStyleOpts(
            curve=0.2  # 线的弯曲程度
            ),
        label_opts=opts.LabelOpts(is_show=False),  # 是否显示标签
        is_large=True,  # 是否启用大规模的线图优化,当图形数据特别多的时候可以开启
        )
# (4)全局配置项:
geo.set_global_opts(
    title_opts=opts.TitleOpts(
        title='武汉封城前迁徙图',  # 主标题
        subtitle='python',  # 副标题
        pos_left='3%',  # 标题距左
        pos_top='3%',  # 标题距上
        title_textstyle_opts=opts.TextStyleOpts(color='#ffffff'),
        ),
    legend_opts=opts.LegendOpts(is_show=False)  # 图例
)

geo.render('流向图.html')

#==========================================================================
data=pd.read_excel(r'D:\截至2月17日22时37分疫情数据.xlsx')
print(data.columns)
# 1获取所有省份的对应的确诊数据:并且转为list类型
mask=data['城市']==data['省份']
province_data=data.loc[mask,['省份','确诊数']].drop(labels=[416],axis=0).values.tolist()
# print(province_data)
# 2绘制中国地图:theme主题
map=Map(init_opts=opts.InitOpts(width='1200px',
                            height='650px',
                            theme=ThemeType.PURPLE_PASSION,  # PURPLE_PASSION紫色激情主题
                                ))
# 3 全局变量设置:
map.set_global_opts(title_opts=opts.TitleOpts(title='中国疫情地图',
                                              subtitle='python'),
                    visualmap_opts=opts.VisualMapOpts(
                        is_piecewise=True,  # 是否按颜色进行分段切割
                        pieces=[
                            {'min':0,'max':10,'label':'1-10','color':'#FFFFE0'},
                            {'min':11,'max':100,'label':'11-100','color':'#FF9797'},
                            {'min':101,'max':500,'label':'101-500','color':'#FF5151'},
                            {'min':501,'max':1000,'label':'501-1000','color':'#FF2D2D'},
                            {'min':1001,'max':5000,'label':'1001-5000','color':'#EA0000'},
                            {'min':5001,'max':10000,'label':'5001-10000','color':'#930000'},
                            {'min':10001,'label':'>10000','color':'#2F0000'},
                        ]
                    )
                    )
# 4绘图
map.add('',
        data_pair=province_data,
        maptype='china',
        is_roam=True
        )
# 5生成图像
map.render('中国疫情地图.html')
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值