如何使用python ggplot包制作箱图

PHC*_*PHC 0 python ggplot2 boxplot pandas

我正在尝试并且非常喜欢ggplot的python端口(http://ggplot.yhathq.com/)

我想制作一些数据箱图,但无法弄清楚如何做,希望有人可以提供帮助.

这是示例代码:

#Create pandas dataframe with random number data and labels 'A', 'B'
data = pd.DataFrame(np.random.randn(1,40)).transpose()
labels = np.repeat(['A','B'],20)
data['labels']=labels
data.columns = ['vals','labels']
Run Code Online (Sandbox Code Playgroud)

产量

   vals          labels
0 -0.685582      A
1 -0.332966      A
2  0.766283      A
3  1.751677      A
4  1.613434      A
Run Code Online (Sandbox Code Playgroud)

现在我试试

ggplot(data,aes(x='labels',y='vals')) + geom_boxplot()
Run Code Online (Sandbox Code Playgroud)

我得到了错误

<repr(<ggplot.ggplot.ggplot at 0x7f204dbb4810>) failed: TypeError: cannot perform reduce with flexible type>
Run Code Online (Sandbox Code Playgroud)

经过一些搜索,我认为问题是标签是字符串值的分类数据,但我不知道如何让ggplot在x轴上识别它

小智 5

我不认为使用x轴来显示标签目前可以使用python ggplot.我可以使用a创建单独的箱图,x='vals',y='labels'但我无法调整x轴.

from ggplot import ggplot, aes, geom_boxplot

import pandas as pd
import numpy as np

data = pd.DataFrame(np.random.randn(1,40)).transpose()
labels = np.repeat(['A','B'],20)
data['labels']=labels
data.columns = ['vals','labels']

ggplot(data, aes(x='vals', y='labels')) + geom_boxplot()
Run Code Online (Sandbox Code Playgroud)

查看geom_boxplot它的代码似乎无法调整轴映射到的内容:geom_boxplot.py

要解决这个限制我通常会使用coord_flipR中,但似乎coord_flip尚未实现.

也就是说,因为ggplot包装matplotlib你可以创建一个新的geom_boxplot调用matplotlibwith vert=True而不是vert=False这个例子中看到的.

我希望这些信息对你有用