利用Python从8.0开始以0.5分为步长,将每个得分区间的频数计算出来并绘制三个类别的频数的热力图
时间: 2024-03-27 09:41:09 浏览: 48
Python绘制热力图示例
4星 · 用户满意度95%
好的,我可以为您提供一个基于Python的绘制热力图的示例代码,使用的是matplotlib和seaborn这两个库。
假设您有一个得分数据集,分为三个类别(A、B、C),可以按照以下步骤进行绘制:
1. 首先,导入必要的库:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
```
2. 然后,读取数据集:
```python
data = pd.read_csv('scores.csv')
```
3. 接下来,将得分数据分为每个区间,并计算每个区间的频数:
```python
bins = np.arange(8.0, 10.5, 0.5)
freq_a, _ = np.histogram(data[data['category'] == 'A']['score'], bins=bins)
freq_b, _ = np.histogram(data[data['category'] == 'B']['score'], bins=bins)
freq_c, _ = np.histogram(data[data['category'] == 'C']['score'], bins=bins)
freqs = np.array([freq_a, freq_b, freq_c])
```
4. 最后,使用seaborn的heatmap函数进行绘制:
```python
sns.heatmap(freqs, cmap='YlGnBu', annot=True, fmt='d', xticklabels=False, yticklabels=bins[:-1])
plt.xlabel('Category')
plt.ylabel('Score')
plt.show()
```
其中,参数cmap指定热力图的颜色映射,这里使用的是YlGnBu;参数annot指定是否在热力图上显示具体的数值;参数fmt指定显示数值的格式;参数xticklabels和yticklabels分别指定x轴和y轴的标签,这里将x轴标签去掉并使用每个区间的得分作为y轴标签。
完整代码如下:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
data = pd.read_csv('scores.csv')
bins = np.arange(8.0, 10.5, 0.5)
freq_a, _ = np.histogram(data[data['category'] == 'A']['score'], bins=bins)
freq_b, _ = np.histogram(data[data['category'] == 'B']['score'], bins=bins)
freq_c, _ = np.histogram(data[data['category'] == 'C']['score'], bins=bins)
freqs = np.array([freq_a, freq_b, freq_c])
sns.heatmap(freqs, cmap='YlGnBu', annot=True, fmt='d', xticklabels=False, yticklabels=bins[:-1])
plt.xlabel('Category')
plt.ylabel('Score')
plt.show()
```
这样就可以绘制出三个类别的频数热力图了。您可以根据自己的需求调整数据和参数来得到更符合自己要求的热力图。
阅读全文