import matplotlib.pyplot as plt import pandas as pd plt.rcParams['font.family'] = 'Fangsong' # 指定使用宋体字体 # 读取数据 data = pd.read_excel('200马力及以上四轮驱动拖拉机.xlsx') fig= plt.figure(figsize=(100, 30), dpi=300) # 按FactoryName和JiJXH分组 grouped_data = data.groupby(['FactoryName', 'JiJXH']) # 绘制箱线图 for index, (name, group) in enumerate(grouped_data): plt.boxplot(group['avg_sale'], positions=[index], widths=0.7) # 设置横轴标签和标题 names = [f'{name[0]}\n{name[1]}' for name in names] # 将元组转换为字符串 plt.xticks(range(len(grouped_data)), names, rotation=90) plt.xlabel('FactoryName\nJiJXH', fontsize=20) # 修改字体大小 plt.ylabel('sale', fontsize=20) # 修改字体大小 plt.title('Sales Boxplot', fontsize=30) # 修改字体大小 #显示图形 plt.show() 横轴FactoryName和JiJXH没有显示出来,只显示第一个字
时间: 2023-12-12 11:05:51 浏览: 110
import numpy as np import matplotlib.pyplot as plt import math
这个问题可能是由于在创建 `names` 列表时出现了错误,导致 `names` 列表只包含了工厂名称和机型号的第一个字母。请尝试在 `grouped_data` 变量的下面添加以下代码,将工厂名称和机型号合并为元组:
```python
# 按FactoryName和JiJXH分组,并合并为元组
grouped_data = [(name, group) for name, group in grouped_data]
```
然后,在 `for` 循环中使用新的 `grouped_data` 变量绘制箱线图和设置横轴标签:
```python
# 绘制箱线图
for index, (name, group) in enumerate(grouped_data):
plt.boxplot(group['avg_sale'], positions=[index], widths=0.7)
# 设置横轴标签和标题
names = [f'{name[0]}\n{name[1]}' for name in grouped_data] # 将元组转换为字符串
plt.xticks(range(len(grouped_data)), names, rotation=90)
plt.xlabel('FactoryName\nJiJXH', fontsize=20) # 修改字体大小
plt.ylabel('sale', fontsize=20) # 修改字体大小
plt.title('Sales Boxplot', fontsize=30) # 修改字体大小
```
这样就可以将工厂名称和机型号正确地显示在横轴标签上。
阅读全文