使用hue选项从pabas db和seaborn的小提琴图中制作多个图

时间:2017-09-21 07:17:59

标签: python pandas matplotlib anaconda seaborn

我正在尝试(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将其写入子图。

这是另一系列错误。我现在不知道该做什么......有什么帮助吗?

1 个答案:

答案 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])

一切都应该正常。