时间:2022-05-06 09:20:42 | 栏目:Python代码 | 点击:次
在可视化展示过程中,为了达到更形象的展示效果,我们往往需要自定义一些直观的图例,本期给大家介绍可视化库Pyecharts中的象形柱图,希望对你有所帮助。
from pyecharts import options as opts from pyecharts.charts import PictorialBar from pyecharts.globals import SymbolType
没有安装pyecharts的,直接pip安装即可。
def add_yaxis( # 系列名称 series_name: str, # 系列数据 y_axis: Sequence, # 图形类型 symbol: Optional[str] = None, # 图形的大小 symbol_size: Union[Numeric, Sequence, None] = None, # 图形的定位位置 symbol_pos: Optional[str] = None, # 图形相对于原本位置的偏移 symbol_offset: Optional[Sequence] = None, # 图形的旋转角度 symbol_rotate: Optional[Numeric] = None, # 是否剪裁图形 is_symbol_clip: bool = False, # 系列 label 颜色 color: Optional[str] = None, # 同一系列的柱间距离,默认为类目间距的 10%,可设固定值 category_gap: Union[Numeric, str] = "10%", # 标签配置项,参考 `series_options.LabelOpts` label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(), )
部分省市人口数量:
province = ["北京", "天津", "湖北", "山西", "上海", "内蒙古", "云南", "黑龙江", "广东", "福建"] values = [2189, 1386, 5775, 3491, 2487, 2404, 4720, 3185, 12601, 4154] c = ( PictorialBar() .add_xaxis(province) .add_yaxis( "", values, label_opts=opts.LabelOpts(is_show=False), symbol_size=18, symbol_repeat="fixed", symbol_offset=[0, 0], is_symbol_clip=True, symbol=SymbolType.ARROW, ) .reversal_axis() .set_global_opts( title_opts=opts.TitleOpts(title="省份人口数量(万人)"), xaxis_opts=opts.AxisOpts(is_show=True), yaxis_opts=opts.AxisOpts( axistick_opts=opts.AxisTickOpts(is_show=False), axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts(opacity=0) ), ), ) ) c.render_notebook()
效果:
symbol样式可选: RECT、ROUND_RECT、TRIANGLE、DIAMOND、ARROW。
设置为“DIAMOND”效果如下:
代码:
c = ( PictorialBar() .add_xaxis(list(dic.keys())) .add_yaxis( "2020", [ {"value": 18, "symbol": dic['飞机']}, {"value": 40, "symbol": dic['火车']}, {"value": 78, "symbol": dic['汽车']}, {"value": 66, "symbol": dic['轮船']}, ], label_opts=opts.LabelOpts(is_show=False), symbol_size=22, symbol_repeat="fixed", symbol_offset=[0, 5], is_symbol_clip=True, ) .add_yaxis( "2021", [ {"value": 54, "symbol": dic['飞机']}, {"value": 68, "symbol": dic['火车']}, {"value": 105, "symbol": dic['汽车']}, {"value": 73, "symbol": dic['轮船']}, ], label_opts=opts.LabelOpts(is_show=False), symbol_size=22, symbol_repeat="fixed", symbol_offset=[0, -25], is_symbol_clip=True, ) .reversal_axis() .set_global_opts( title_opts=opts.TitleOpts(title="城市交通工具"), 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()
效果: