R ggplot barplot; Заполнение на основе двух отдельных переменных - программирование
Подтвердить что ты не робот

R ggplot barplot; Заполнение на основе двух отдельных переменных

В картине написано более тысячи слов. Как вы можете видеть, мой fill основан на переменной variable.

Внутри каждого столбца есть, однако, несколько объектов данных (черные границы), поскольку дискретная переменная complexity делает их уникальными. То, что я пытаюсь найти, - это то, что делает каждый раздел панели более различимым, чем текущий вид. Предпочтительным было бы, если бы это было что-то вроде затенения.

http://s12.postimage.org/ltgs677ul/snapshot2.png

Вот пример (не тот же набор данных, поскольку оригинал был импортирован):

dat <- read.table(text = "Complexity Method Sens Spec MMC
1 L Alpha 50 20 10
2 M Alpha 40 30 80
3 H Alpha 10 10 5
4 L Beta 70 50 60
5 M Beta 49 10 80
6 H Beta 90 17 48
7 L Gamma 19 5 93
8 M Gamma 18 39 4
9 H Gamma 10 84 74", sep = "", header=T)

library(ggplot2)
library(reshape)
short.m <- melt(dat)
ggplot(short.m, aes(x=Method, y= value/100 , fill=variable)) + 
    geom_bar(stat="identity",position="dodge", colour="black") + 
    coord_flip()
4b9b3361

Ответ 1

Это далека от совершенства, но, надеюсь, шаг в правильном направлении, поскольку он уклонился от variable, но все же может каким-то образом представить Complexity:

ggplot(short.m, aes(x=Method, y=value/100, group=variable, fill=variable, alpha=Complexity,)) + 
  geom_bar(stat="identity",position="dodge", colour="black") +
  scale_alpha_manual(values=c(0.1, 0.5, 1)) +
  coord_flip()

enter image description here

Ответ 2

Трудно быть уверенным без воспроизводимого примера, как сказал Чейз, но добавление alpha=complexity может работать:

ggplot(short.m, aes(x=Method, y= value/100 , fill=variable, alpha=complexity)) +
geom_bar(stat="identity",position="dodge", colour="black") + coord_flip()

Ответ 3

Вам может потребоваться отделить ваши факторы Method и variable. Вот два способа сделать это:

Используйте facet_wrap():

    ggplot(short.m, aes(x=variable, y=value/100, fill=Complexity)) + 
    facet_wrap(~ Method) + geom_bar(position="stack", colour="black") +
    scale_alpha_manual(values=c(0.1, 0.5, 1)) + coord_flip()

Используйте оба значения по оси x:

    ggplot(short.m, aes(x=Method:variable, y=value/100, group=Method, fill=variable, alpha=Complexity,)) + 
    geom_bar(stat="identity", position="stack", colour="black") +
    scale_alpha_manual(values=c(0.1, 0.5, 1)) + coord_flip()