import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler
data = pd.read_excel('C:\\Users\\86135\\Desktop\\sales_summary.xlsx')
scaler = MinMaxScaler()
data['销量(归一化)'] = scaler.fit_transform(data[['销量(千克)']])
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.figure(figsize=(12, 6))
plt.scatter(data['分类名称'], data['单品名称'], c=data['销量(归一化)'], cmap='viridis', s=50)
plt.colorbar(label='销量(归一化)')
plt.xlabel('分类名称')
plt.ylabel('单品名称')
plt.title('销售总量归一化分布图')
plt.xticks(rotation=90)
plt.tight_layout()
plt.savefig(r'C:\Users\86135\Desktop\sales_normalized_plot.png', dpi=300)
data.to_csv(r'C:\Users\86135\Desktop\sales_normalized_summary.csv', index=False)
【以下回答由 GPT 生成】
首先,根据问题描述,可以考虑以下几方面来优化散点图的可视化结果和左边一栏的单品数据:
可以在代码中加入以下语句来解决分类名称的重叠问题:
plt.xticks(rotation=45, ha='right') # 设置x轴标签旋转角度和对齐方式
plt.subplots_adjust(bottom=0.3) # 调整底部边距
可以在代码中加入以下语句来调整散点的大小和颜色映射:
plt.scatter(data['分类名称'], data['单品名称'], c=data['销量(归一化)'], cmap='viridis', s=100)
其中,参数s
代表散点的大小,可以适当调整大小以展示更清晰的结果。
可以在代码中加入以下语句来使用子图分割:
fig, ax = plt.subplots(nrows=2, ncols=2, figsize=(12, 12)) # 创建2x2的子图布局
ax[0, 0].scatter(data['分类名称'], data['单品名称'], c=data['销量(归一化)'], cmap='viridis', s=50)
ax[0, 1].scatter(data['分类名称'], data['单品名称'], c=data['销量(归一化)'], cmap='viridis', s=50)
ax[1, 0].scatter(data['分类名称'], data['单品名称'], c=data['销量(归一化)'], cmap='viridis', s=50)
ax[1, 1].scatter(data['分类名称'], data['单品名称'], c=data['销量(归一化)'], cmap='viridis', s=50)
可以根据实际需求,调整子图的布局和尺寸。
这些是一些建议的优化方法,可以根据实际情况选择其中的一种或多种方法来改善散点图的可视化结果和左边一栏的单品数据。
【相关推荐】