有FactoryName、JiJXH 、Shi、sale_avg多行数据表,如何按照FactoryName、JiJXH 为行索引,shi为列索引,制作每行sale_avg色阶图,并且行列索引名称显示出来,用python怎么做阶
时间: 2023-07-10 21:15:46 浏览: 107
要按照FactoryName、JiJXH为行索引,Shi为列索引,制作每行sale_avg的色阶图,并显示行列索引名称,可以使用Python中的pandas和matplotlib库进行操作。具体步骤如下:
1. 首先,读取数据表并将FactoryName和JiJXH作为行索引,Shi作为列索引,可以使用pandas中的pivot函数实现:
```
import pandas as pd
# 读取数据表
df = pd.read_csv('data.csv')
# 将FactoryName和JiJXH作为行索引,Shi作为列索引
df_pivot = df.pivot(index=['FactoryName', 'JiJXH'], columns='Shi', values='sale_avg')
```
2. 接下来,根据每行sale_avg的值生成对应的色阶,可以使用matplotlib中的colormap函数实现:
```
import matplotlib.pyplot as plt
# 生成色阶
colormap = plt.cm.Reds
```
3. 然后,使用matplotlib中的figure和axes函数创建一个新的图形和子图,并使用imshow函数绘制色阶图,同时设置行列索引名称:
```
# 创建一个新的图形和子图
fig, ax = plt.subplots()
# 绘制色阶图
im = ax.imshow(df_pivot, cmap=colormap, aspect='auto')
# 设置行列索引名称
ax.set_xticks(range(len(df_pivot.columns)))
ax.set_xticklabels(df_pivot.columns)
ax.set_yticks(range(len(df_pivot.index)))
ax.set_yticklabels(df_pivot.index)
# 显示色阶图
plt.show()
```
完整代码如下:
```
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据表
df = pd.read_csv('data.csv')
# 将FactoryName和JiJXH作为行索引,Shi作为列索引
df_pivot = df.pivot(index=['FactoryName', 'JiJXH'], columns='Shi', values='sale_avg')
# 生成色阶
colormap = plt.cm.Reds
# 创建一个新的图形和子图
fig, ax = plt.subplots()
# 绘制色阶图
im = ax.imshow(df_pivot, cmap=colormap, aspect='auto')
# 设置行列索引名称
ax.set_xticks(range(len(df_pivot.columns)))
ax.set_xticklabels(df_pivot.columns)
ax.set_yticks(range(len(df_pivot.index)))
ax.set_yticklabels(df_pivot.index)
# 显示色阶图
plt.show()
```
在代码中,`ax.set_xticks()`和`ax.set_xticklabels()`用于设置列索引名称,`ax.set_yticks()`和`ax.set_yticklabels()`用于设置行索引名称。其中,`set_xticks()`和`set_yticks()`函数用于设置坐标轴刻度的位置,`set_xticklabels()`和`set_yticklabels()`函数用于设置坐标轴刻度的标签。
阅读全文