import pandas as pd import seaborn as sns import matplotlib.pyplot as plt plt.rcParams['font.family'] = 'Fangsong' # 指定使用宋体字体 fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(30, 25), dpi=300) # 创建 9 个子图 # 读取数据 df = pd.read_excel("test_Fd.xlsx") # 按照 FenDMC 进行分组 groups = df.groupby("FenDMC") # 遍历每个分组,绘制子图 for idx, (name, group) in enumerate(groups): # 按照 FactoryName 和 JiJXH 进行分组,计算平均售价 grouped = group.groupby(["FactoryName", "JiJXH"])['avg_sale'].mean().reset_index() # 在对应的子图中绘制热力图 row = idx col = idx ax = axes[row, col] sns.heatmap(grouped.pivot(index="FactoryName", columns="JiJXH", values="avg_sale"), cmap='YlGnBu', annot=True, fmt='.2f', cbar_kws={'label': '单台售价', 'shrink':0.8, 'aspect':40}, ax=ax) ax.set_xlabel(None) ax.set_ylabel(None) ax.set_title(name, fontsize=20) # 调整边距,使图像居中 plt.tight_layout() # 保存图像 plt.savefig('heatmap.png') # 显示图像 plt.show()还是提示 too many indices for array: array is 1-dimensional, but 2 were indexed
时间: 2024-01-11 21:03:58 浏览: 30
这个错误提示可能是由于 `axes` 变量的大小不正确导致的。在您的代码中,`axes` 是一个大小为 (1, 3) 的子图数组,应该只有一行三列,但是在 `sns.heatmap()` 中却使用 `idx` 作为行和列的索引,这会导致索引越界。可以尝试将 `axes` 变量修改为以下形式:
```python
fig, axes = plt.subplots(nrows=3, ncols=1, figsize=(10, 25), dpi=300) # 创建 3 个子图
```
并将 `ax = axes[row, col]` 改为 `ax = axes[idx]`。这样,就可以创建三个子图,每个子图一行,三列;并且在 `sns.heatmap()` 中使用 `idx` 作为子图的索引,就可以正确地绘制热力图了。
相关问题
import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from sklearn import tree
以下是使用import语句导入pandas、numpy、matplotlib.pyplot、seaborn和sklearn.tree的示例代码:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import tree
```
- pandas是一个数据处理库,用于读取、处理和分析数据。
- numpy是一个数学库,用于处理数组和矩阵等数学运算。
- matplotlib.pyplot是一个绘图库,用于绘制各种类型的图表。
- seaborn是一个基于matplotlib的数据可视化库,提供了更高级别的界面和更多的图表类型。
- sklearn.tree是scikit-learn库中的一个模块,用于实现决策树算法。
import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as sns
这是一段Python代码,它导入了四个库:pandas、numpy、matplotlib.pyplot和seaborn。这些库都是用于数据分析和可视化的常用库。其中,pandas用于数据处理和分析,numpy用于科学计算,matplotlib.pyplot用于绘制图表,seaborn用于数据可视化。如果你想使用这些库,需要先安装它们。你可以使用pip命令来安装它们,例如:
```shell
pip install pandas numpy matplotlib seaborn
```
安装完成后,你就可以在Python代码中使用它们了。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)