python 柱状图_python制作人脸象形柱状图

象形柱图是可以设置各种具象图形元素的柱状图。往往用在信息图中,用于有至少一个类目轴或时间轴的直角坐标系上。它既可以用图形的长宽变形表现数据,也可以用图形的个数、甚至是图形的颜色、透明度变化表现数据。

aba26fb8ead0694ca977888fd6b67e00.png

下面给大家介绍一下常见象形柱状图的画法:

一、基本象形柱状图

基本象形柱状图较普通柱状图,就是把图形用具体图像表示,pyecharts提供的标记类型包括 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow', 'none'

from pyecharts import options as optsfrom pyecharts.charts import PictorialBarfrom pyecharts.globals import SymbolTypelocation = ["山西", "四川", "西藏", "北京", "上海", "内蒙古", "云南", "黑龙江", "广东", "福建"]values = [13, 42, 67, 81, 86, 94, 166, 220, 249, 262]c = (    PictorialBar()    .add_xaxis(location)  #X轴坐标    .add_yaxis(           #y轴坐标        "",        values,           #数值        label_opts=opts.LabelOpts(is_show=False),   #不显示数值        symbol_size=18,                             #图形大小        symbol_repeat="fixed",                      #指定图形元素是否重复        symbol_offset=[0, 0],                       #图形相对于原本位置的偏移        is_symbol_clip=True,                        #是否剪裁图形        symbol=SymbolType.TRIANGLE,               #图形类型        color='#008B8B'    )    .reversal_axis()    .set_global_opts(        title_opts=opts.TitleOpts(),        xaxis_opts=opts.AxisOpts(is_show=False),  #不显示x轴        yaxis_opts=opts.AxisOpts(            axistick_opts=opts.AxisTickOpts(is_show=False),  #不显示y轴            axisline_opts=opts.AxisLineOpts(                linestyle_opts=opts.LineStyleOpts(opacity=0) #不显示坐标线            ),        ),    ))c.render_notebook()
e3da8fdd7f299eef4196f31bf560b27d.png

参数介绍:

add_xaxis:x轴坐标add_yaxis:y轴坐标reversal_axis:图形反转AxisOpts:设置x轴坐标AxisOpts:设置y轴坐标

二、引接外部图片

如果感觉pyecharts自带图形不够过瘾,不用怕,我们可以引用外接图片,下面给大家介绍两种方法:

1.引用矢量路径

这里给大家推荐1个网站:

https://www.iconfont.cn/search/index
4603886262c03b46f770b0a85cf8824c.png

这里有大量的矢量图形

以火狐浏览器为例,选择自己喜欢的图形,打开抓包工具点击下载

5c7a9513eee95cf79600518495df0058.png

打开json格式的返回数据:

523d1664386e68017034d7f5c0181f6d.png

svg的内容就是该图片的矢量路径。可以将自己喜欢的图片矢量路径存入json格式文件:

5852a100d37c0f9947bed979ebdb4b88.png

这样以后就可以直接调用了

import jsonfrom pyecharts import options as optsfrom pyecharts.charts import PictorialBarkind = ["汽车", "山", "狗", "人"]with open("symbol.json", "r", encoding="utf-8") as f:    symbols = json.load(f)c = (    PictorialBar()    .add_xaxis(kind)    .add_yaxis(        "2019",        [            {"value": 184, "symbol": 'path://'+symbols["car"]},            {"value": 89, "symbol": 'path://'+symbols["hill"]},            {"value": 73, "symbol": 'path://'+symbols["dog"]},            {"value": 91, "symbol": 'path://'+symbols["people"]}, #引用矢量图形        ],        label_opts=opts.LabelOpts(is_show=False),        symbol_size=22,        symbol_repeat="fixed",        symbol_offset=[0, 5],               #调整图片位置,否则会重叠        is_symbol_clip=True,        symbol_rotate=180,                  #对图形进行旋转        color='#32CD32'    )    .add_yaxis(        "2020",        [            {"value": 114, "symbol": 'path://'+symbols["car"]},            {"value": 69, "symbol": 'path://'+symbols["hill"]},            {"value": 85, "symbol": 'path://'+symbols["dog"]},            {"value": 73, "symbol": 'path://'+symbols["people"]}, #引用矢量图形        ],        label_opts=opts.LabelOpts(is_show=False),        symbol_size=22,        symbol_repeat="fixed",        symbol_offset=[0, -25],             #调整图片位置,否则会重叠        is_symbol_clip=True,        symbol_rotate=180,                  #对图形进行旋转        color='#FF4500'    )    .reversal_axis()    .set_global_opts(        title_opts=opts.TitleOpts(),        xaxis_opts=opts.AxisOpts(is_show=False),        yaxis_opts=opts.AxisOpts(            axistick_opts=opts.AxisTickOpts(is_show=False),            axisline_opts=opts.AxisLineOpts(                linestyle_opts=opts.LineStyleOpts(opacity=0)            ),        ),    ))c.render_notebook()
ae9edf145c0f3960c6cb55f6b04e970b.png
参数介绍都在程序中

2.调用图片url

c = (    PictorialBar()    .add_xaxis(location)    .add_yaxis(        "",        [            {"value": 73, "symbol": 'image://'+url_t1},            {"value": 84, "symbol": 'image://'+url_t2},            {"value": 47, "symbol": 'image://'+url_t3},            {"value": 83, "symbol": 'image://'+url_t4}, #引用url图形        ],        label_opts=opts.LabelOpts(is_show=False),        symbol_size=60,        symbol_repeat="fixed",        symbol_offset=[0, 0],        is_symbol_clip=True,      )    .reversal_axis()    .set_global_opts(        title_opts=opts.TitleOpts(),        xaxis_opts=opts.AxisOpts(is_show=False),        yaxis_opts=opts.AxisOpts(            axistick_opts=opts.AxisTickOpts(is_show=False),            axisline_opts=opts.AxisLineOpts(                linestyle_opts=opts.LineStyleOpts(opacity=0)            ),        ),    ))c.render_notebook()
4e8cc7a2ca86d82e5ed1bc0af7ef5bb0.png

和第一种方法区别在于图片地址不同,但是却更方便一些,基本所有图片都能引用。

-完-

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值