pyecharts bar 自定义两条MarkLine
时间: 2023-11-15 10:24:25 浏览: 245
要自定义两条MarkLine,可以使用`add_markline()`方法。该方法接受一个参数`markline`,可以传入一个包含MarkLine的字典或列表。
以下是一个示例代码,其中添加了两条MarkLine,分别表示均值和中位数:
```python
from pyecharts import options as opts
from pyecharts.charts import Bar
x_data = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
y_data = [820, 932, 901, 934, 1290, 1330, 1320]
mean_value = sum(y_data) // len(y_data) # 计算均值
median_value = sorted(y_data)[len(y_data) // 2] # 计算中位数
bar = Bar()
bar.add_xaxis(x_data)
bar.add_yaxis("", y_data)
marklines = [
opts.MarkLine(name="均值", data=[{"yAxis": mean_value}]),
opts.MarkLine(name="中位数", data=[{"yAxis": median_value}]),
]
bar.set_global_opts(
title_opts=opts.TitleOpts(title="Bar-自定义两条MarkLine"),
tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
# 设置两条MarkLine
visualmap_opts=opts.VisualMapOpts(max_=1500, is_piecewise=True),
markline_opts=opts.MarkLineOpts(
linestyle_opts=opts.LineStyleOpts(type_="dashed"),
label_opts=opts.LabelOpts(position="middle", font_size=14),
data=marklines,
),
)
bar.render("bar_custom_markline.html")
```
解释一下代码中的关键部分:
- 计算均值和中位数的代码:
```python
mean_value = sum(y_data) // len(y_data) # 计算均值
median_value = sorted(y_data)[len(y_data) // 2] # 计算中位数
```
- 设置两条MarkLine的代码:
```python
marklines = [
opts.MarkLine(name="均值", data=[{"yAxis": mean_value}]),
opts.MarkLine(name="中位数", data=[{"yAxis": median_value}]),
]
bar.set_global_opts(
...
markline_opts=opts.MarkLineOpts(
linestyle_opts=opts.LineStyleOpts(type_="dashed"),
label_opts=opts.LabelOpts(position="middle", font_size=14),
data=marklines,
),
)
```
- `markline_opts`参数的解释:
- `linestyle_opts`:设置MarkLine的线条样式,这里使用虚线;
- `label_opts`:设置MarkLine的标签样式,这里设置在中间位置显示,字体大小为14;
- `data`:设置MarkLine的数据,这里传入包含两条MarkLine的列表。每个MarkLine的数据是一个字典,包含`yAxis`键表示在y轴的位置。
最终生成的图表如下所示:
![bar_custom_markline.png](https://cdn.jsdelivr.net/gh/FE-ng/images/2022/01/27/bar_custom_markline.png)
阅读全文