我正在尝试并非常喜欢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']
输出
vals labels
0 -0.685582 A
1 -0.332966 A
2 0.766283 A
3 1.751677 A
4 1.613434 A
现在我试试
ggplot(data,aes(x='labels',y='vals')) + geom_boxplot()
我收到了错误
<repr(<ggplot.ggplot.ggplot at 0x7f204dbb4810>) failed: TypeError: cannot perform reduce with flexible type>
经过一些搜索后,我认为问题在于标签是字符串值的分类数据,但我不确定如何让ggplot在x轴上识别它
答案 0 :(得分:5)
我不认为使用x轴显示标签目前可以使用python ggplot
。我可以使用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()
查看geom_boxplot
的代码,似乎无法调整轴映射到的内容:geom_boxplot.py
为了解决这个限制,我通常在R中使用coord_flip
,但似乎coord_flip
是not yet implemented。
也就是说,由于ggplot包含了matplotlib,你可以创建一个新的geom_boxplot
,用matplotlib
而不是vert=True
调用vert=False
,如this example所示。
我希望这些信息有用