2017-02-08 3 views
-1

Я хотел бы создать двустороннюю диаграмму, где «целевая» переменная находится на оси х, «птицы» и «волки» находятся в левой части y топор, каждый со своими пропорциями.Как создать двустороннюю диаграмму с помощью ggplot2

df<- read.table(text = "target birds wolfs  
           1  0.3  0.5 
           0  0.9  0.2 ",header = TRUE) 

Я пытался следовать коду в this link, чтобы удовлетворить свою цель, но без успеха. Как я могу решить эту проблему?

Update: прилагается эскиз enter image description here

+0

ссылка не отображается, и вы можете привести пример фигуры? – drmariod

+1

Вы уверены, что хотите иметь цель на оси х, которая определяет в основном левый и правый, а также птицы и шоу волка слева? – drmariod

+0

Здравствуйте, @ drmariod, ссылка Прикреплена. Идея состоит в том, чтобы показать скорость успеха (значения) каждой переменной по отношению к цели 0/1 – mql4beginner

ответ

0
df<- read.table(text = "target birds wolfs  
           1  0.3  0.5 
           0  0.9  0.2 ",header = TRUE) 

df[df$target==0,] <- -df[df$target==0,] 
df <- tidyr::gather(df,animal,value,c(birds,wolfs)) 

ggplot(df, aes(x = animal, y = value, fill = target)) + 
    geom_bar(stat = "identity") + 
    coord_flip() 

Попробуйте вышеуказанное?

+0

Вы хотите, чтобы «цель» была фактором. И вы можете использовать 'geom_col' вместо' geom_bar (stat = "identity") '. – Axeman

2

Вам нужно немного перепрофилирование для этого, и ifelse быть немного на стороне ленивых:

df2 <- tidyr::gather(df, 'var', 'val', -target) 
ggplot(df2, aes(var)) + 
    geom_col(aes(y = ifelse(target == 0, -val, val), fill = factor(target))) + 
    coord_flip() 

enter image description here

+0

Спасибо @Axeman, я не уверен, что понимаю, как использовать его с моими данными. Как я могу использовать свои данные в вашем коде, я не вижу места для «птиц» и «волков»? – mql4beginner

+1

@ mql4beginner: Ой, я пропустил строку кода, извините. – Axeman

Смежные вопросы