colors = XX #三个品牌的雷达图颜色分别设为红、绿、黄
时间: 2023-10-06 11:10:11 浏览: 61
为 `plot_radar()` 函数添加颜色参数 `colors`,可以按照以下方式修改:
```python
import numpy as np
import matplotlib.pyplot as plt
def plot_radar(data, future, colors=None):
"""
绘制雷达图
参数:
data: pandas.DataFrame,需要绘制雷达图的数据,每行表示一个品牌,每列表示一个性能评价指标
future: str 或 list,要展示的一个或多个品牌
colors: list,雷达图颜色列表,按照品牌顺序从前往后排列
返回值:
无返回值,直接显示雷达图
"""
# 设置要展示的性能评价指标
columns = ['性能1', '性能2', '性能3', '性能4', '性能5', '性能6']
# 获取要展示的品牌的数据
if isinstance(future, str):
values = data.loc[future, columns].values
brands = [future]
elif isinstance(future, list):
values = data.loc[future, columns].values
brands = future
else:
raise TypeError("参数 future 应为 str 或 list 类型")
# 计算角度
angles = np.linspace(0, 2*np.pi, len(columns), endpoint=False)
angles = np.concatenate((angles, [angles[0]]))
# 绘制雷达图
fig = plt.figure()
ax = fig.add_subplot(111, polar=True)
for i in range(len(brands)):
values_brand = values[i]
values_brand = np.concatenate((values_brand, [values_brand[0]]))
if colors is not None:
color = colors[i]
else:
color = None
ax.plot(angles, values_brand, 'o-', linewidth=2, label=brands[i], color=color)
ax.fill(angles, np.zeros_like(angles), 'grey', alpha=0.25)
ax.set_thetagrids(angles * 180/np.pi, columns)
ax.grid(True)
ax.legend(loc='upper right')
plt.show()
```
在绘制雷达图时,如果传入了颜色列表 `colors`,则按照品牌顺序从前往后排列,将三个品牌的雷达图颜色分别设为红、绿、黄。如果不传入颜色列表,则使用默认颜色。
阅读全文