多类绘图板geom_density图不起作用

时间:2019-03-13 23:21:23

标签: python ggplot2 graph data-analysis plotnine

我无法使用积木素:我无法制作3类(按颜色分隔)的图形。

import pandas as pd
import numpy as np

from plotnine import *

path = '/home/punkproger/workspace/MyWorkPython/TestWork/galaxy_identificator/data/train.csv'

df = pd.read_csv(path)

my_plot = ggplot(data=df[:30000], mapping=aes(x='ra', fill='class', color='class')) + geom_density( alpha=0.7)
print(my_plot)

每1万个样本中就有一个新的“类别”(0-2)。

结果将是:

this graph

但是如果我将样本数更改为10k(只有1个类):

import pandas as pd
import numpy as np

from plotnine import *

path = '/home/punkproger/workspace/MyWorkPython/TestWork/galaxy_identificator/data/train.csv'

df = pd.read_csv(path)

my_plot = ggplot(data=df[:10000], mapping=aes(x='ra', fill='class', color='class')) + geom_density( alpha=0.7)
print(my_plot)

结果是:

this graph

现在,这个拥有阶级和色彩的头衔。 我想在一个平面上制作3个图形,例如:

this one

我是plotine的newbee,看不出有什么问题。花了很多时间尝试使用google来解决这个问题。

您可以在此处下载数据:https://drive.google.com/file/d/1IMK1YtXG8Zl1lY8JJ12RtzDpHn65vQKi/view

1 个答案:

答案 0 :(得分:0)

抱歉,我无法下载您的数据,但这是包含模拟数据的解决方案。

import numpy as np
import pandas as pd
from plotnine import *

np.random.seed(0)

df = pd.DataFrame({'x': np.hstack((
                        np.random.normal(size=1000), 
                        np.random.normal(10, 2, size=1000), 
                        np.random.normal(-10, 2, size=1000))), 
                   'c': [0]*1000 + [1]*1000 + [2]*1000})

(ggplot(df, aes('x', color='c', fill='c')) + geom_density(alpha=0.7))

赞这个:

获取前1,000行(对应于c == 0):

(ggplot(df[:1000], aes('x', color='c', fill='c')) + geom_density(alpha=0.7))

现在创建分类变量:

df['cat'] = df['c'].astype('category')
(ggplot(df, aes('x', color='cat', fill='cat')) + geom_density(alpha=0.7))