使用matplotlib绘制雷达图
时间: 2023-10-14 20:16:05 浏览: 104
好的,以下是使用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`库。你可以根据自己的需求修改数据和图形的样式。
相关问题
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()
```
这段代码将会生成一个雷达图,显示五个城市在七个指标上的得分情况。
希望这可以帮助你完成这个任务。
matplotlib绘制雷达图标出数据
要绘制雷达图,需要使用matplotlib中的`pyplot`和`polar`模块。首先,将数据转换成极坐标系下的坐标,然后使用`plot`函数绘制线条,最后使用`fill`函数填充颜色。
以下是一个简单的例子:
```python
import numpy as np
import matplotlib.pyplot as plt
# 数据
categories = ['A', 'B', 'C', 'D', 'E']
values = [4, 3, 2, 5, 1]
# 极坐标系下的角度
angles = np.linspace(0, 2*np.pi, len(categories), endpoint=False)
# 将数据归一化到[0, 1]范围内
values = np.concatenate((values,[values[0]]))
angles = np.concatenate((angles,[angles[0]]))
values = (values - np.min(values)) / (np.max(values) - np.min(values))
# 绘制雷达图
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.grid(True)
plt.show()
```
这个例子会绘制出一个五边形的雷达图,其中每个角代表一个类别,每个点的位置代表该类别的数据值。
阅读全文