各种图表合集

【pyecharts有两种基本图表】
1. 带x轴和y轴的直角坐标系图表
.add_xaxis()
.add_yaxis()

2. 不带x轴和y轴的基本图表(饼图,词云图,雷达图,桑基图)
.add()

【组合图表:轮播多图】组合图表,也是一种特殊的图表类型

并行多图: 就是往组合图表里面填充各种图表(Bar,Line,Scatter) —— 往图表里面填充图表

我的第一个柱形图

# 【pyecharts绘图思路】
# 0.导入需要用到的图表类(Bar,Line,Scatter,Pie)
from pyecharts.charts import Bar, Line, Scatter, Pie
import pyecharts.options as opts

# 1. 准备数据(数据爬取-数据清洗-数据结构化): 数据格式要符合传参的需求
bar_x =      ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
bar_height1 = [5,       20,       36,       10,     75,        90]
bar_height2 = [15,       25,       33,       11,     75,        90]
# 2.通过导入的图表类,创建图表实例
bar = Bar() # 柱形图实例

# 3.往图表实例填充数据,即完成绘图
bar.add_xaxis(     bar_x     )
bar.add_yaxis("商家A", bar_height1 )
bar.add_yaxis("商家B", bar_height2 )
# 4.设置“系列配置项”和“全局配置项”--> 可做可不做(类似于matplotlib的:图表辅助元素的定制和样式美化)
# 全局配置项中,“图例”和“提示框”是默认打开的。
# 系列配置项中,有些参数在set_global_opts设置中会生效,而有些参数却在set_series_opts设置中生效:
# 设置“全局配置项”(设置图表外部元素的样式)
bar.set_global_opts(
                    title_opts=opts.TitleOpts(title="这是我的第一个pyechars柱形图", subtitle="我感觉不难嘛"), # 标题
                    legend_opts=opts.LegendOpts(),  # 图例
                    tooltip_opts=opts.TooltipOpts( border_width= 2, border_color='red'), # 提示框
                    toolbox_opts=opts.ToolboxOpts(pos_left = '10%', pos_top='20%' ),  # 工具箱
                    datazoom_opts=opts.DataZoomOpts(),  # 区域缩放条
                    visualmap_opts=opts.VisualMapOpts(),  # 视觉映射条(用来通过颜色筛选展示)
    
                    # 通过“轴配置项”,配置x轴
                    xaxis_opts=opts.AxisOpts(name='我是X轴', name_rotate=60, name_gap=45,
                                              axislabel_opts=opts.LabelOpts(color='red',
                                                                           font_size=10,
                                                                           font_style='italic',
                                                                           margin=20, # 轴标签与轴脊的距离
                                                                           )
                                            ), 
    
                    # 通过“轴配置项”,配置y轴
                    yaxis_opts=opts.AxisOpts(name='我是Y轴',  # 轴的名称
                                             min_  =0, max_ = 200, # 刻度范围
                                             interval = 20,  # 配合min_和max_参数,调整刻度位置
                                             axistick_opts=opts.AxisTickOpts(is_show=True, is_inside=True, length=40),
                                             axislabel_opts=opts.LabelOpts(color='red',
                                                                           font_size=10,
                                                                           font_style='italic',)

                                            ),  # 
                   )

# 设置“系列配置项”(设置图表内部元素的样式)
bar.set_series_opts(
                    label_opts=opts.LabelOpts(color='green',
                                              font_size=20,
                                              font_style='italic',
                                              position ='top',
                                              distance = 30,
                                              )
                   
                   
                   )
# 5. 展示图表(渲染图表)
bar.render_notebook()  # 渲染到jupyter notebook编辑器页面

 展示图表如下:

 【桑基图展示: 红一方面军(中央红军)长征兵力流向】

from pyecharts import options as opts
from pyecharts.charts import Sankey
# 定义节点
nodes = [
    {"name": "江西"},
    {"name": "广东"},
    {"name": "福建"},
    {"name": "广西"},
    {"name": "湖南"},
    {"name": "牺牲"},
    {"name": "贵州"},
]
# 定义数据流向
links = [
     # 源头source  -->  目标target
    {"source": "江西", "target": "广东", "value": 84000},
    {"source": "江西", "target": "福建", "value": 2000},
    {"source": "广东", "target": "湖南", "value": 65000},
    {"source": "广东", "target": "牺牲", "value": 19000},
    {"source": "湖南", "target": "贵州", "value": 30000},
    {"source": "湖南", "target": "牺牲", "value": 35000},
]
# 拿破仑东征图(最原始的桑基图)
c = (
    Sankey()
    .add(
        "sankey",
        nodes,
        links,
        linestyle_opt=opts.LineStyleOpts(opacity=0.2, curve=0.5, color="source"),
        label_opts=opts.LabelOpts(position="right"),
    )
    #.set_global_opts(title_opts=opts.TitleOpts(title="Sankey-基本示例"))
)
c.render_notebook()

桑基图的特点:一种特殊的流程图,描述第一组节点到第二组节点的数据流向及流量大小。
                         第一组节点的总数据量 等于 第二组节点的总数据量(流出=流入,能量守恒)

展示图表如下:

地图Map 

from pyecharts import options as opts
from pyecharts.charts import Map
from pyecharts.faker import Faker'
data =  [
         ['江西省', 86000],
         ['福建省', 85000], ['广东省', 82000], ['湖南省', 65000], ['广西省', 65000],
         ['贵州省', 30000], ['云南省', 20000], ['四川省', 10000], ['甘肃省', 5000],
         ['陕西省', 7000],  # 星星之火可以燎原,《毛泽东选集1-4卷》,唯物辩证法——实践论和矛盾论
        ]
c = (
    Map()
    .add("聚集", data, "china")  # 第三个参数为:地图类型,具体参考 pyecharts.datasets.map_filenames.json 文件
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Map-广东地图"), visualmap_opts=opts.VisualMapOpts()
    )
)
c.render_notebook()

统计地图构建数据时, 地区名要跟地图上的名字完全对应,不可以增减字数。
统计地图的地图类型选取,需要注意:
 1. 中国地图传入: 'china'
 2. 外国地图传入: '美国', '英国', '俄罗斯'
 3. 中国省份和城市: '广东', '梅州', '新疆

展示图表如下:

 词云图

import pyecharts.options as opts
from pyecharts.charts import WordCloud
data = [
    ("王俊凯", "999"),     # 《长城》     
    ("易烊千玺", "3000"),  # 演技派 《少年的你》 —— 校园霸凌 
    ("王源", "777"),
    ("我爱你", "688"),
    ("演技派", "588"),
    ("唱歌好听", "516"),
    ("喜欢你", "515"),
]


wordcloud = (
    WordCloud()
    .add(series_name="热点分析", data_pair=data, 
         word_size_range=[20, 50],  # 词的字号
        
        )
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title="热点分析", title_textstyle_opts=opts.TextStyleOpts(font_size=23)
        ),
        tooltip_opts=opts.TooltipOpts(is_show=True),
         )
   
)
wordcloud.render_notebook()

 展示图表如下:

 【组合图表:并行多图】

from pyecharts import options as opts
from pyecharts.charts import Bar, Grid, Line
from pyecharts.faker import Faker
bar = (
    Bar()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家A", Faker.values())
    .add_yaxis("商家B", Faker.values())
    .set_global_opts(title_opts=opts.TitleOpts(title="Grid-Bar"))
)
line = (
    Line()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家A", Faker.values())
    .add_yaxis("商家B", Faker.values())
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Grid-Line", pos_top="48%"),
        # 通过联合调整pos_bottom, pos_top, pos_left, pos_right这四个参数,可以精细布局图例在整张画布中的位置    
        legend_opts=opts.LegendOpts(pos_bottom="30%",pos_top="65%",
                                     pos_left="10%",pos_right="75%",
                                   
                                   textstyle_opts = opts.TextStyleOpts(font_size=3),
                                   
                                   ),
    )
)
line1 = (
    Line()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家A", Faker.values())
    .add_yaxis("商家B", Faker.values())
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Grid-Line", pos_top="48%"),
        legend_opts=opts.LegendOpts(pos_top="48%"),
    )
)

line2 = (
    Line()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家A", Faker.values())
    .add_yaxis("商家B", Faker.values())
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Grid-Line", pos_top="48%"),
        legend_opts=opts.LegendOpts(pos_top="48%"),
    )
)
grid = (
    # 1.创建一个Grid图表
    Grid()
    # 2.往Grid图表里面填充其他图表(Bar,Line,Scatter)
    # 通过联合调整pos_bottom, pos_top, pos_left, pos_right这四个参数,可以精细布局图表在整张画布中的位置    
    .add(bar, grid_opts=opts.GridOpts(pos_bottom="55%",pos_top="1%",
                                      pos_left="10%",pos_right="10%",
                                     ))
    
    .add(line, grid_opts=opts.GridOpts(pos_bottom="1%",pos_top="60%",
                                       pos_left="1%",pos_right="80%",
                                      ))
    
    .add(line1, grid_opts=opts.GridOpts(pos_bottom="1%",pos_top="60%",
                                        pos_left="30%",pos_right="30%",
                                       ))
    
    .add(line2, grid_opts=opts.GridOpts(pos_bottom="1%",pos_top="60%",
                                     pos_left="80%",pos_right="1%",
                                       ))
)
grid.render_notebook()

 展示图表如下:

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值