Как построить гистограмму с Python ggplot?

Я хотел бы построить гистограмму, представляющую значение TP на оси Y и метод на оси X. В частности, я хотел бы получить разные цифры в соответствии со значением столбца "данные".

В этом случае мне нужна первая гистограмма со значениями 2,1,6,9,8,1,0 и вторая гистограмма со значениями 10,10,16,...

Версия ggplot на python, похоже, немного отличается от версии R.

            FN FP  TN  TP                   data  method
method                                              
SS0208  18  0  80   2  A p=100 n=100 SNR=0.5  SS0208
SS0408  19  0  80   1  A p=100 n=100 SNR=0.5  SS0408
SS0206  14  9  71   6  A p=100 n=100 SNR=0.5  SS0206
SS0406  11  6  74   9  A p=100 n=100 SNR=0.5  SS0406
SS0506  12  6  74   8  A p=100 n=100 SNR=0.5  SS0506
SS0508  19  0  80   1  A p=100 n=100 SNR=0.5  SS0508
LKSC    20  0  80   0  A p=100 n=100 SNR=0.5    LKSC
SS0208  10  1  79  10   A p=100 n=100 SNR=10  SS0208
SS0408  10  0  80  10   A p=100 n=100 SNR=10  SS0408
SS0206   4  5  75  16   A p=100 n=100 SNR=10  SS0206

В качестве первого шага я попытался построить только одну гистограмму и получил ошибку.

 df = df[df.data == df.data.unique()[0]]

In [65]: ggplot() + geom_bar(df, aes(x='method', y='TP'), stat='identity')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-65-dd47b8d85375> in <module>()
----> 1 ggplot() + geom_bar(df, aes(x='method', y='TP'), stat='identity')

TypeError: __init__() missing 2 required positional arguments: 'aesthetics' and 'data'w

In [66]: 

Я пробовал разные комбинации команд, но не решил.

Как только эта первая проблема будет решена, я бы хотел, чтобы гистограммы были сгруппированы в соответствии со значением "data". Это может быть сделано 'facet_wrap'

1 ответ

Это, вероятно, потому что вы позвонили ggplot() без аргумента (не уверен, если это возможно. Если вы так думаете, пожалуйста, добавьте вопрос на http://github.com/yhat/ggplot).

Во всяком случае, это должно работать:

ggplot(df, aes(x='method', y='TP')) + geom_bar(stat='identity')

К сожалению, фасетирование с помощью geom_bar еще не работает должным образом (только когда все фасеты имеют все значения уровней / x!) -> Bugreport

Другие вопросы по тегам