import matplotlib.pyplot as plt import pandas as pd from math import pi # 设置数据 df = pd.DataFrame({ 'group': ['yun', 'ding', 'shu', 'mo'], 'var1': [38, 1.5, 30, 4], 'var2': [29, 10, 9, 34], 'var3': [8, 39, 23, 24], 'var4': [7, 31, 33, 14], 'var5': [28, 15, 32, 14] }) # 目标数量 categories = list(df)[1:] N = len(categories) # 角度 angles = [n / float(N) * 2 * pi for n in range(N)] angles += angles[:1] # 初始化 ax = plt.subplot(111, polar=True) # 设置第一个 ax.set_theta_offset(pi / 2) ax.set_theta_direction(-1) # 添加背景信息 plt.xticks(angles[:-1], categories) ax.set_rlabel_position(0) plt.yticks([10, 20, 30], ["10", "20", "30"], color="grey", size=7) plt.ylim(0, 40) # 添加数据图 # 第一个 values = df.loc[0].drop('group').values.flatten().tolist() values += values[:1] ax.plot(angles, values, linewidth=1, linestyle='solid', label="yun") ax.fill(angles, values, 'b', alpha=0.1) # 第二个 values = df.loc[1].drop('group').values.flatten().tolist() values += values[:1] ax.plot(angles, values, linewidth=1, linestyle='solid', label="ding") ax.fill(angles, values, 'r', alpha=0.1) # 第三个 values = df.loc[2].drop('group').values.flatten().tolist() values += values[:1] ax.plot(angles, values, linewidth=1, linestyle='solid', label="shu") ax.fill(angles, values, 'r', alpha=0.1) # 第四个 values = df.loc[3].drop('group').values.flatten().tolist() values += values[:1] ax.plot(angles, values, linewidth=1, linestyle='solid', label="mo") ax.fill(angles, values, 'r', alpha=0.1) # 添加图例 plt.legend(loc='upper right', bbox_to_anchor=(0.1, 0.1)) # 显示 plt.show()解释这段代码
时间: 2024-04-28 11:19:38 浏览: 227
Python学习之数据可视化
好的,我来给你解释一下这段Python代码的意思:
1. 首先,我们导入了需要使用的库,包括matplotlib.pyplot(用于绘制数据图)、pandas(用于数据处理)和math.pi(表示圆周率π)。
2. 然后,我们创建了一个数据框(DataFrame),其中包含了一些数据,例如group、var1、var2、var3、var4和var5等列。
3. 我们定义了一个categories列表,其中包含了除了group列以外的所有列名。
4. 接着,我们计算了categories的数量N,并根据数量计算出了每个角度的大小angles。
5. 我们将angles的最后一个元素复制一份,并添加到angles的第一位,以便于绘制闭合曲线。
6. 然后,我们创建了一个极坐标图(polar=True),设置了图表的偏移量和方向。
7. 我们添加了一些背景信息,例如x轴刻度、y轴刻度和y轴刻度标签等等。
8. 我们添加了四个数据图,每个数据图都由一个线条和一个填充区域组成。每个数据图都使用了不同的颜色和标签。
9. 最后,我们添加了一个图例,并显示了整个图表。
总的来说,这段代码的作用是创建一个极坐标图,并在其中添加了四个数据图。每个数据图都表示了一组数据,包括了group、var1、var2、var3、var4和var5等列。通过这些数据图,我们可以比较不同组数据之间的差异,并找出其中的规律和趋势。
阅读全文