使用matplotlib绘制雷达图
时间: 2023-10-14 07:16:05 浏览: 48
好的,以下是使用matplotlib绘制雷达图的示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 数据
categories = ['A', 'B', 'C', 'D', 'E']
values = [5, 3, 6, 7, 4]
# 计算角度
N = len(categories)
angles = np.linspace(0, 2*np.pi, N, endpoint=False)
angles = np.concatenate((angles, [angles[0]]))
# 绘制图形
fig = plt.figure()
ax = fig.add_subplot(111, polar=True)
ax.plot(angles, values, 'o-', linewidth=2)
ax.fill(angles, values, alpha=0.25)
ax.set_thetagrids(angles * 180/np.pi, categories)
ax.set_title("Radar Chart")
plt.show()
```
这段代码会绘制一个雷达图,其中使用了`numpy`和`matplotlib`库。你可以根据自己的需求修改数据和图形的样式。
相关问题
matplotlib绘制正四边形雷达图
matplotlib是一个常用的Python绘图库,可以用于绘制各种类型的图表,包括雷达图。下面是使用matplotlib绘制正四边形雷达图的步骤:
1. 导入matplotlib库和numpy库:
```python
import matplotlib.pyplot as plt
import numpy as np
```
2. 创建一个正方形的子图,并设置极坐标系:
```
fig = plt.figure()
ax = fig.add_subplot(111, polar=True)
```
3. 定义数据和标签:
```python
data = [0.8, 0.6, 0.9, 0.7] # 数据值
labels = ['A', 'B', 'C', 'D'] # 标签
```
4. 计算角度:
```python
angles = np.linspace(0, 2 * np.pi, len(labels), endpoint=False).tolist()
angles += angles[:1] # 闭合图形
```
5. 绘制雷达图:
```python
ax.plot(angles, data, 'o-') # 绘制连线
ax.fill(angles, data, alpha=0.25) # 填充颜色
# 添加标签
ax.set_thetagrids(np.degrees(angles[:-1]), labels)
```
6. 设置雷达图的范围和刻度:
```python
ax.set_ylim(0, 1) # 设置数据范围
ax.set_yticks([0.2, 0.4, 0.6, 0.8]) # 设置刻度
```
7. 添加标题和图例:
```python
plt.title("Radar Chart")
plt.legend(['Data'])
```
8. 显示图形:
```python
plt.show()
```
这样就可以绘制出一个正四边形雷达图。你可以根据自己的需求修改数据、标签和其他样式。
1、读取文件,读取文化、科教、经济产值、财富储蓄、环境、卫生、GDP 这7项指标,展示北京、广州、苏州、长沙、西安五个城市的发展水平。 2、进行可视化,使用matplotlib绘制雷达图。
很好,这是一个数据分析的任务。首先,我们需要收集这五个城市的数据。
可以在国家统计局或者其他官方网站上找到这些数据。这里我以国家统计局为例,假设我们已经找到了这些数据,它们储存在一个名为“data.csv”的文件中。
接下来,我们可以使用Python的pandas库读取这个文件,并将数据存储为一个DataFrame对象。
```python
import pandas as pd
data = pd.read_csv('data.csv')
```
现在,我们可以使用pandas的数据选择和过滤功能,选择我们需要的数据,并将它们存储为一个新的DataFrame对象。
```python
selected_data = data[['城市', '文化', '科教', '经济产值', '财富储蓄', '环境', '卫生', 'GDP']]
selected_data = selected_data.loc[selected_data['城市'].isin(['北京', '广州', '苏州', '长沙', '西安'])]
```
现在,我们已经得到了我们需要的数据。接下来,我们可以使用matplotlib库绘制雷达图。
```python
import matplotlib.pyplot as plt
import numpy as np
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 设置雷达图的角度、数目和标签
labels = np.array(['文化', '科教', '经济产值', '财富储蓄', '环境', '卫生', 'GDP'])
angles = np.linspace(0, 2*np.pi, len(labels), endpoint=False)
angles = np.concatenate((angles, [angles[0]]))
# 绘制雷达图
fig = plt.figure()
ax = fig.add_subplot(111, polar=True)
for city in selected_data['城市']:
values = selected_data.loc[selected_data['城市'] == city].values[0][1:]
values = np.concatenate((values, [values[0]]))
ax.plot(angles, values, 'o-', linewidth=2, label=city)
ax.fill(angles, values, alpha=0.25)
ax.set_thetagrids(angles * 180/np.pi, labels)
plt.legend(loc='best')
plt.show()
```
这段代码将会生成一个雷达图,显示五个城市在七个指标上的得分情况。
希望这可以帮助你完成这个任务。