import matplotlib.pyplot as plt import pandas as pd plt.rcParams['font.family'] = 'Fangsong' # 指定使用宋体字体 # 读取数据 data = pd.read_excel('FenDMC_sale.xlsx') # 绘制箱线图 fig= plt.figure(figsize=(100, 30), dpi=300) gs = fig.add_gridspec(nrows=1, ncols=1) ax = fig.add_subplot(gs[0, 0]) # ax.set_position([0.1, 0.2, 1, 1]) boxes = [] medians = [] labels = [] for name, group in data.groupby('FenDMC'): boxes.append(group['sale']) labels.append('\n'.join([name[i:i+10] for i in range(0, len(name), 10)])) median = group['sale'].median() medians.append(median) x = list(range(1, len(medians)+1)) # x轴坐标,从1到总分档数 y = medians # y轴坐标,即各分档销售额的中位数 ax.plot(x, y, 'bo-', markersize=20, linewidth=2) ax.boxplot(boxes, labels=labels,whis=3,flierprops={'marker': 'o', 'markerfacecolor': 'red', 'markersize': 20}) for box in boxes: box.set(color='#000000', linewidth=2) # 箱体边框 box.set(facecolor='#E1FFFF') # 箱体内部填充颜色 # 配置图表 ax.set_xlabel('FenDMC') ax.set_ylabel('sale') ax.set_title('FenDMC and sale boxplot') plt.xticks(fontsize=20) plt.yticks(fontsize=20) # 调整边距,使图像居中 plt.tight_layout() # 保存图像 plt.savefig('不同分档销售销售差价高于20万.png') # 显示图形 plt.show() 提示'Series' object has no attribute 'set'
时间: 2023-09-21 08:06:28 浏览: 72
这个提示的意思是,代码中的一个变量应该是 Pandas 库中的 Series 类型,而这个类型没有 set 方法。可能出现这个问题的代码是:
```python
for box in boxes:
box.set(color='#000000', linewidth=2)
box.set(facecolor='#E1FFFF')
```
这里的 boxes 可能是一个包含多个 Pandas Series 的列表,而 Pandas Series 并没有 set 方法。如果想要为这些 Series 设置样式,可以将它们转换为 Matplotlib 中的 Artist 对象,例如:
```python
for box in ax.artists:
box.set_edgecolor('#000000')
box.set_facecolor('#E1FFFF')
```
相关问题
import matplotlib.pyplot as plt import pandas as pd plt.rcParams['font.family'] = 'Fangsong' # 指定使用宋体字体 # 读取数据 df = pd.read_excel('200马力及以上四轮驱动拖拉机新.xlsx') fig = plt.figure(figsize=(200, 60), dpi=300) # 绘制箱线图 plt.boxplot([df['sale']],labels=[df['Factory_jijxh']], whis=3) # 显示图形 plt.show() 怎么修改
这段代码是用来绘制箱线图的,但是其中的 figsize 参数值过大,dpi 参数也过大,会导致图片非常大,不方便查看。建议将 figsize 和 dpi 参数值适当调小,如下所示:
```python
import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams['font.family'] = 'Fangsong' # 指定使用宋体字体
# 读取数据
df = pd.read_excel('200马力及以上四轮驱动拖拉机新.xlsx')
# 绘制箱线图
fig = plt.figure(figsize=(10, 6), dpi=80)
plt.boxplot([df['sale']], labels=[df['Factory_jijxh']], whis=3)
# 显示图形
plt.show()
```
你可以将 figsize 和 dpi 参数值调整为适合你的需求的数值,以达到最佳的显示效果。
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt plt.rcParams['font.family'] = 'Fangsong' # 指定使用宋体字体 fig= plt.figure(figsize=(30, 25), dpi=300) ax1= fig.add_subplot(131) # 读取数据 df = pd.read_excel("test_Fd.xlsx") 把Fendmc是140-160马力四轮驱动动力换挡拖拉机查找出来
你可以使用 Pandas 的 loc 函数来筛选符合条件的数据,代码如下:
```python
df.loc[(df['Fendmc'] == '140-160马力四轮驱动动力换挡拖拉机')]
```
其中,`df['Fendmc']` 表示选取数据表中名为 Fendmc 的列,`==` 表示判断是否相等,`'140-160马力四轮驱动动力换挡拖拉机'` 则为要查找的值。
这行代码会返回符合条件的所有行数据,你可以根据需要进行进一步处理。