参考文档:
官方文档-案例:https://pyecharts.org/#/zh-cn/intro
官方文档-配置项:https://pyecharts.org/#/zh-cn/global_options
保存为高清图片:https://blog.csdn.net/weixin_56859075/article/details/126138153
保存为高清html:https://blog.csdn.net/Caiqiudan/article/details/127637886?spm=1001.2014.3001.5502
参数zlevel
,默认为0,值越大,层级越大。
chart = (
# 设置图类型
Scatter(init_opts=opts.InitOpts(renderer='svg')) # svg矢量图高清
# 添加x轴
.add_xaxis(...)
# 添加y轴
.add_yaxis(...)
# 设置全局变量
.set_global_opts(
# 设置标题(title, fontsize)
title_opts=opts.TitleOpts(...)
# 设置x坐标轴(label、ticks)
xaxis=opts.AxisOpts(...)
# 设置y坐标轴(label、ticks)
yaxis=opts.AxisOpts(...)
# 设置视觉配置(eg:散点图的点的样式)
visualmap_opts=opts.VisualMapOpts(...)
)
)
from pyecharts import options as opts
from pyecharts.charts import Scatter
from pyecharts.commons.utils import JsCode
# 导入输出图片工具
from pyecharts.render import make_snapshot
# 使用snapshot-selenium 渲染图片
from snapshot_selenium import snapshot
y_data = a[[y,'aa',z,x]].apply(list, axis=1).to_list()
c = (
Scatter(init_opts=opts.InitOpts(renderer='svg'))
# 添加x轴
.add_xaxis(a[x])
# 添加y轴
.add_yaxis('商品A', y_data, color=JsCode("""new echarts.graphic.RadialGradient(0.4, 0.3, 1,
[{offset: 0, color: '#bbd5e8'}, {offset: 1, color: '#287cb5'}])"""), # 渐变色
label_opts=opts.LabelOpts(is_show=False),
markline_opts=opts.MarkLineOpts( # 添加两条线,一横(value_index=1),一纵(value_index=0)
is_silent=True, # 鼠标移动的时候没有动态效果
data=[opts.MarkLineItem(x=a[x].quantile(q)), # 横线
opts.MarkLineItem(y=a[y].quantile(q))], # 纵线
symbol=['none', 'arrow'], # 两头的样式
symbol_size=7, # 箭头大小
linestyle_opts=opts.LineStyleOpts(width=1, color='black', opacity=0.4)
)
)
# 全局配置
.set_global_opts(
title_opts=opts.TitleOpts(
# title="气泡图",
# title_textstyle_opts=opts.TextStyleOpts(font_size=36), # 字体大小
# pos_left='center' # 居中显示
),
# 设置x轴
xaxis_opts=opts.AxisOpts( # 设置xlabel
# is_show=False, # x轴是否可见
type_='value', # x轴类型为数值
name='\n'.join(list(x)),
# name_textstyle_opts=opts.TextStyleOpts(font_size=18), # 设置label字体大小
# axislabel_opts=opts.LabelOpts(font_size=18), # 设置x轴坐标字体大小
splitline_opts=opts.SplitLineOpts(is_show=True, # 显示x轴网格线
linestyle_opts=opts.LineStyleOpts(width=1, # 网格宽度为3
type_='dashed', # 线条样式,默认为直线
opacity=0.9 # 透明度
),
),
axisline_opts=opts.AxisLineOpts(is_show=False), # 不显示线
name_gap=50, # 坐标轴名称与轴线之间的距离
),
# 设置y轴
yaxis_opts=opts.AxisOpts(
name=y,
# name_textstyle_opts=opts.TextStyleOpts(font_size=18),
minor_tick_opts=opts.MinorTickOpts(is_show=True, split_number=2), # 次级分割线
axislabel_opts=opts.LabelOpts(
# font_size=18,
formatter='{value}%', # 百分比格式
),
axisline_opts=opts.AxisLineOpts(is_show=False), # 不显示线
# max_interval=0.05, # 最大刻度间隔
splitline_opts=opts.SplitLineOpts(is_show=True,
linestyle_opts=opts.LineStyleOpts(width=1,
type_='dotted',
opacity=0.9))
),
visualmap_opts=opts.VisualMapOpts( # 视觉配置
is_show=False, # 不显示视觉配置项
type_='size', # 'size',可根据数据调节气泡大小
min_=a[z].min(), max_=a[z].max(), # 通过气泡大小来显示的数据中,最小值和最大值范围。默认[0,100],即若数值超过100则不只显示range_size的max
range_size=[10,70], # 设置最小的气泡宽度和最大的气泡宽度
# range_opacity=0.5, # 气泡透明度
series_index=0, # 指定哪一组数据需要通过视觉映射配置来绘制气泡图
dimension=3, # 使用数据的第n个维度设置气泡大小
),
tooltip_opts=opts.TooltipOpts( # 设置提示框配置项
# axis_pointer_type='cross', # 鼠标动画,十字线
position='top', # 提示框的位置,在鼠标上方
formatter=JsCode( # 设置提示内容格式
"function(params){return params.value[2]+' : '+'%s'+params.value[0];}"%(z)),
),
)
)
c.render("跑代码后输出的图表和Excel//pyechart生成的气泡图.html"); # 保存为html
c.render_notebook()