怎么实现价格和评分对比,实现性价比的图,用Pyecharts ,最好是组合图
时间: 2024-03-12 15:45:54 浏览: 12
要实现价格和评分对比的性价比图,可以使用 Pyecharts 中的组合图(Mixed Chart),同时包含柱状图和折线图。具体步骤如下:
1. 从数据源中获取需要的数据,包括小区名称、价格和评分。
2. 对价格和评分进行归一化处理,以便进行对比。
3. 使用 `Bar()` 创建柱状图,并添加价格和评分的数据。
4. 使用 `Line()` 创建折线图,添加性价比的数据,即评分除以价格的值。
5. 使用 `overlap()` 方法将柱状图和折线图组合在一起。
6. 设置全局配置,包括标题、图例、X 轴和 Y 轴名称等。
7. 最后将组合图渲染出来。
下面是示例代码,供参考:
```python
from pyecharts import options as opts
from pyecharts.charts import Bar, Line
# 获取数据源
data = [
{"小区名": "小区1", "价格": 2000, "评分": 4.5},
{"小区名": "小区2", "价格": 2500, "评分": 4.8},
{"小区名": "小区3", "价格": 3000, "评分": 4.2},
{"小区名": "小区4", "价格": 1800, "评分": 4.6},
{"小区名": "小区5", "价格": 2200, "评分": 4.9},
]
# 对价格和评分进行归一化处理
prices = [d["价格"] for d in data]
prices = [(p - min(prices)) / (max(prices) - min(prices)) for p in prices]
scores = [d["评分"] for d in data]
scores = [(s - min(scores)) / (max(scores) - min(scores)) for s in scores]
# 计算性价比
cp_ratios = [scores[i] / prices[i] for i in range(len(data))]
# 创建柱状图和折线图,并设置数据
bar = (
Bar()
.add_xaxis([d["小区名"] for d in data])
.add_yaxis("价格", prices)
.add_yaxis("评分", scores)
)
line = (
Line()
.add_xaxis([d["小区名"] for d in data])
.add_yaxis("性价比", cp_ratios, yaxis_index=1)
)
# 将柱状图和折线图添加到同一个图表中
mixed_chart = bar.overlap(line)
# 设置全局配置
mixed_chart.set_global_opts(
title_opts=opts.TitleOpts(title="小区性价比对比图"),
legend_opts=opts.LegendOpts(pos_top="5%"),
xaxis_opts=opts.AxisOpts(name="小区名称"),
yaxis_opts=[
opts.AxisOpts(name="价格"),
opts.AxisOpts(
name="性价比",
axislabel_opts=opts.LabelOpts(formatter="{value}"),
),
],
)
# 显示图表
mixed_chart.render()
```
在上面的示例中,我们首先从数据源中获取了需要的数据,并对价格和评分进行了归一化处理。然后,使用 `Bar()` 创建了柱状图,并添加了价格和评分的数据;使用 `Line()` 创建了折线图,并添加了性价比的数据(即评分除以价格的值)。最后,使用 `overlap()` 方法将柱状图和折线图组合在一起,设置了全局配置,包括标题、图例、X 轴和 Y 轴名称等,并将组合图渲染出来。