我正在尝试(public data set)尝试更多地了解如何可视化数据和一些机器学习的基础知识,我似乎真的陷入了困境。我正在尝试使用hue标签处理seaborn小提琴图,在数据集和质量栏中按列绘制红葡萄酒和白葡萄酒......
我可能不会很好地解释这一点。
无论如何我的代码看起来像这样:
class Wine():
def __init__(self):
self.Process()
def Process(self):
whit = pds.read_csv("winequality-white.csv", sep=";", header=0)
reds = pds.read_csv("winequality-red.csv", sep=";", header=0)
self.Plot_Against_Color(whit, reds)
def Plot_Against_Color(self, white, red):
nwhites = white.shape[0]; nreds = red.shape[0]
white_c = ["white"] * nwhites; red_c = ["red"] * nreds
white['color'] = white_c; red['color'] = red_c
total = white.append(red, ignore_index=True)
parameters = list(total)
nparameters = len(parameters)
plt_rows = math.floor((nparameters - 1) / 3)
if (nparameters - 1) % 3 > 0:
plt_rows += 1
fig, ax = plt.subplots(int(plt_rows), 3)
fig.suptitle('Characteristics of Red and White Wine as a Function of Quality')
for i in range(len(parameters)):
title = parameters[i]
if title == 'quality' or title == 'color':
continue
print(title)
r = math.floor(i / 3);
c = i % 3
sns.violinplot(data=total, x='quality', y=title, hue='color', split=True, ax=[r, c])
ax[r, c].set_xlabel('quality')
ax[r, c].set_ylabel(title)
plt.tight_layout()
这给了我一个错误
AttributeError: 'list' object has no attribute 'fill_betweenx'
我也尝试使用示例here将其写入子图。
这是另一系列错误。我现在不知道该做什么......有什么帮助吗?
答案 0 :(得分:1)
问题出在这一部分:
sns.violinplot(data=total, x='quality', y=title, hue='color', split=True, ax=[r, c])
请通过这种方式纠正轴分配ax = ax [r,c]:
sns.violinplot(data=total, x='quality', y=title, hue='color', split=True, ax=ax[r, c])
一切都应该正常。