python bar图_【python实战】pyecharts绘制PictorialBar图

一直想用matplotlib来画用图片填充的柱形图,但是,摸索了好久都没找到,最后只能转战pyecharts了。

好在pyecharts还是可以实现了,先放上pyecharts的样图:

37bc8c9dcac5

pictoral bar.png

37bc8c9dcac5

pictoral bar2.png

37bc8c9dcac5

pictoral bar3.png

接下来就是照葫芦画瓢了。

1. 条形图

37bc8c9dcac5

pictorialbar_horizon.png

# 颜色转换

def RGB_to_Hex(tmp):

rgb = tmp.split(',')#将RGB格式划分开来

strs = '#'

for i in rgb:

num = int(i)#将str转int

#将R、G、B分别转化为16进制拼接转换并大写

strs += str(hex(num))[-2:].replace('x','0').upper()

return strs

def pic_bar_horizon(symbol,values,label,formatter,filename):

# 调用symbol的json文件

with open("symbol.json", "r", encoding="utf-8") as f:

symbols = json.load(f)

#作图

pictorialbar=PictorialBar()

pictorialbar.add_xaxis(label)

pictorialbar.add_yaxis("",

values,

label_opts=opts.LabelOpts(position="right",formatter="{c}"+formatter,font_size=18),

symbol_size=50,

symbol_repeat='fixed',

symbol_offset=[0,0],

is_symbol_clip=True,

symbol='path://'+symbols[symbol],

color=RGB_to_Hex('75,172,198'),

)

pictorialbar.reversal_axis()

pictorialbar.set_global_opts(

xaxis_opts=opts.AxisOpts(is_show=False),

yaxis_opts=opts.AxisOpts(

axislabel_opts=opts.LabelOpts(font_size=18),

axistick_opts=opts.AxisTickOpts(is_show=False),

axisline_opts=opts.AxisLineOpts(

linestyle_opts=opts.LineStyleOpts(opacity=0))))

pictorialbar.render()

make_snapshot(snapshot, pictorialbar.render(),filename)

def pic_bar_horizon_ex():

label = ["保留月薪", "实际月薪","平均月薪","总体"]

values = [5616.34255978742,3777.4339158062,2345.75534234,5646.98876]

values=[format(i,'.2f') for i in values]

symbol,filename,formatter='money',"pictorialbar_horizon.png","元"

pic_bar_horizon(symbol,values,label,formatter,filename)

# 调用

pic_bar_horizon_ex()

2.柱状图

37bc8c9dcac5

pictorialbar_vertical.png

def pic_bar_vertical(symbol,values,label,formatter,filename):

# 调用symbol的json文件

with open("symbol.json", "r", encoding="utf-8") as f:

symbols = json.load(f)

#作图

pictorialbar=PictorialBar()

pictorialbar.add_xaxis(label)

pictorialbar.add_yaxis("",

values,

label_opts=opts.LabelOpts(position="top",formatter="{c}"+formatter,font_size=18),

symbol_size=50,

symbol_repeat='fixed',

symbol_offset=[0,0],

is_symbol_clip=True,

symbol='path://'+symbols[symbol],

color=RGB_to_Hex('75,172,198'),

)

pictorialbar.set_global_opts(

xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=18),

axistick_opts=opts.AxisTickOpts(is_show=False),

axisline_opts=opts.AxisLineOpts(

linestyle_opts=opts.LineStyleOpts(opacity=0))),

yaxis_opts=opts.AxisOpts(is_show=False)

)

pictorialbar.render()

make_snapshot(snapshot, pictorialbar.render(),filename)

def pic_bar_vertical_ex():

label = ["保留月薪", "实际月薪","平均月薪","总体"]

values = [5616.34255978742,3777.4339158062,2345.75534234,5646.98876]

values=[format(i,'.2f') for i in values]

symbol,filename,formatter='dog',"pictorialbar_vertical.png",""

pic_bar_vertical(symbol,values,label,formatter,filename)

# 调用

pic_bar_vertical_ex()

自定义设定symbol的话,根据pyecharts文档,可以用矢量图的路径:

37bc8c9dcac5

symbol.png

其中,矢量图的路径的获取方式可以是:

①在Iconfont中,检索相应的icon;

37bc8c9dcac5

icon.png

②登录,点开相应的图标;

37bc8c9dcac5

icon2.png

③右键-检查,就会出现该矢量图的路径:

37bc8c9dcac5

icon3.png

然后,自己造一个symbol的json文件,之后随意添加并调用就可以了,类似于:

{

"dog": "M992 192h-128l-14.32-28.62A64 64 0 0 0 792.44 128H685.2l-54.56-54.56C610.46 53.28 576 67.56 576 96.06v299.68l256 91.42V416h64c70.7 0 128-57.3 128-128v-64c0-17.68-14.32-32-32-32z m-224 96c-17.68 0-32-14.32-32-32s14.32-32 32-32 32 14.32 32 32-14.32 32-32 32zM192 448c-35.28 0-64-28.72-64-64 0-35.34-28.66-64-64-64S0 348.66 0 384c0 83.32 53.66 153.7 128 180.2V992c0 17.68 14.32 32 32 32h128c17.68 0 32-14.32 32-32V768h320v224c0 17.68 14.32 32 32 32h128c17.68 0 32-14.32 32-32V555.1L532.1 448H192z",

"money":"M35.4432 817.92C51.2 807.3984 239.9104 650.112 250.3936 637.0048c13.1072-10.4832 26.2272-10.4832 26.2272-10.4832h314.56s49.8176 5.248 49.8176 47.1808c0 26.2144-18.3552 52.48-49.8176 57.6768-26.2144 5.248-91.7504 10.4832-138.9312 13.1072-15.7312 0 0 10.4832 0 10.4832l60.3008 39.3216h209.7152s86.5024-60.288 141.5552-99.6096c91.7376-60.3008 125.824 0 125.824 0s10.4832 20.9664 0 34.0736C939.84 770.7008 764.16 917.504 751.0912 928s-28.8256 5.248-28.8256 5.248H360.4992a90.56 90.56 0 0 0-47.1808 18.3424s-57.6768 47.1936-70.784 57.6768c-28.8384 20.9664-44.5696 0-44.5696 0l-162.56-165.12s-15.7312-15.7184 0-26.2144z m754.9696-511.2192c0 165.12-133.696 301.4656-301.4656 301.4656S187.4816 474.4832 187.4816 306.7008 321.1776 5.2352 488.96 5.2352s301.4528 133.696 301.4528 301.4656zM640.9984 146.8032c7.8592-15.7312 0-28.8384-15.7312-39.3216-18.3552-10.496-34.0864-7.872-47.1936 10.4832L486.4 251.6608l-97.0624-131.072C376.2304 104.8576 363.1232 99.6096 344.768 107.52s-23.5904 20.9664-15.7312 41.9328l94.3744 131.072H347.392c-7.8592 7.872-13.1072 13.1072-13.1072 23.6032s5.248 18.3424 13.1072 23.5904h99.6096v36.6976H347.392c-10.4832 5.248-13.1072 13.1072-13.1072 23.5904 2.56 10.4832 5.248 18.3552 13.1072 23.6032h99.6096v96.9856c-2.56 26.2144 10.4832 41.9456 36.6976 41.9456s39.3344-13.1072 39.3344-41.9456v-97.024h99.6096q15.7312-7.872 15.7312-23.6032t-15.7312-23.5904h-99.6096V325.12h99.6096c10.4832-7.872 15.7312-13.1072 15.7312-23.5904s-5.248-18.3552-15.7312-23.5904h-76.0192l94.3744-131.072z m0 0"

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值