Как изменить цвет точки в geom_dotplot? - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь изменить цвет заливки точек в комбинированной гистограмме / точечной диаграмме c. У меня есть следующий код:

df <- read.csv("df.csv")
df$label <- factor(df$label, levels = c("label 1","label 2"))
df$a <- factor(df$a, levels = c("10000","NTC"))
df$b <- factor(df$b, levels = c("0","2","5","10"))
df$y <- as.numeric(df$y)
df_SE <- summarySE(df, measurevar="y", groupvars=c("label", "a", "b"), na.rm = TRUE)

p <- ggplot(df_SE, aes(x=interaction(a, b), y = y, fill=label))+
geom_bar(stat="identity", size=0.75, position=position_dodge(0.8), width = 0.7,
           color="black")+
  geom_errorbar(data=df_SE , aes(ymin=y-se, ymax=y+se),
                position=position_dodge(0.8), size=0.5, width=.1, colour="black")+
  geom_dotplot(data = df, aes(x=interaction(df$a, df$b), y = df$y),
               binaxis = "y", stackdir = "center", dotsize = .35, 
               position =position_dodge(0.8))+
  scale_fill_manual(values=c("#A6CEE3", "#1F78B4"),name= "label",labels=c("label 1","label 2"))+
  scale_y_continuous(limits = c(0,30), breaks = seq(0,30,5))+
  theme(panel.background = element_rect(fill = "white"),
        plot.title = element_text(family = "Helvetica", face = "bold", size = (15)),
        axis.text.x = element_text(family = "Helvetica",colour = "black",
                                   size = rel(1.5)),
        axis.text.y = element_text(family = "Helvetica",colour = "black",
                                   size = rel(1.5)),
        axis.title = element_text(colour="black",family = "Helvetica",
                                  size = rel(1.5)),
        legend.text = element_text(colour="black",
                                   family = "Helvetica", size = rel(1.5)),
        legend.title = element_text(colour = "black",size = rel(2),
                                    family = "Helvetica"),
        axis.line = element_line(color = "black",
                                 size = 0.5, linetype = "solid"))+
  theme(strip.text = element_text(size=13, face = 'bold'),
        strip.background = element_rect(fill="white"),
        axis.text.x =element_text(size=12, vjust = 0.2),
        legend.text.align = 0)+
  labs(x="x", y="y")+
  geom_hline(yintercept = 30, color = "red")
print(p)

, который дает мне следующий график c. Graphi c вывод из предоставленного кода

Однако обратите внимание, что точки имеют тот же цвет, что и полосы, поэтому их трудно увидеть. Я хочу, чтобы они были просто черными. Я пробовал указать с помощью кода:

geom_dotplot(data = df, aes(x=interaction(df$a, df$b, fill = "black"), y = df$y),
           binaxis = "y", stackdir = "center", dotsize = .35, 
           position =position_dodge(0.8))

, но он смещает точки столбцов на графике c, которые я либо не могу, либо не знаю, как исправить. Добавление команды fill за пределами aes(), как показано ниже:

geom_dotplot(data = df, aes(x=interaction(df$a, df$b) , fill = "black", y = df$y),
           binaxis = "y", stackdir = "center", dotsize = .35, 
           position =position_dodge(0.8))

дает мне сообщение с сообщением:

«Ошибка: недостаточно значений в ручном масштабировании. Требуется 3, но только 2. "

Кто-нибудь знает, как решить эту проблему?

С уважением,

Ответы [ 2 ]

1 голос
/ 05 августа 2020

Без данных протестировать не смог. Вы можете попробовать добавить color = "black" и переместить fill = "black" за пределы aes:

ggplot()
geom_dotplot(data = df, aes(x=interaction(a, b), y = y), 
           fill = "black", color = "black",
           binaxis = "y", stackdir = "center", dotsize = .35, 
           position =position_dodge(0.8))

Пожалуйста, дайте мне знать, если это не сработает. Я удалю это. Кроме того, я удалил все df$ в коде.

0 голосов
/ 05 августа 2020

попытка предлагаемого решения Я пробовал ваше решение, но это удаляет идентичность точек. Т.е. - они больше не совпадают с соответствующими столбцами на гистограмме.

Вот данные, с которыми я работаю;

       y     a  b   label
1  11.16 10000  0 label 1
2   8.25   NTC  0 label 1
3  11.11   NTC  2 label 1
4  15.64   NTC  5 label 1
5  30.00   NTC 10 label 1
6   9.87 10000  0 label 1
7   9.07   NTC  0 label 1
8  26.66   NTC  2 label 1
9  22.65   NTC  5 label 1
10 30.00   NTC 10 label 1
11 10.37 10000  0 label 1
12  9.85   NTC  0 label 1
13 12.32   NTC  2 label 1
14 14.87   NTC  5 label 1
15 30.00   NTC 10 label 1
16  6.14 10000  0 label 2
17 20.99   NTC  0 label 2
18 24.53   NTC  2 label 2
19 30.00   NTC  5 label 2
20 30.00   NTC 10 label 2
21  6.20 10000  0 label 2
22 24.93   NTC  0 label 2
23 30.00   NTC  2 label 2
24 30.00   NTC  5 label 2
25 30.00   NTC 10 label 2
26 10.75 10000  0 label 2
27 22.19   NTC  0 label 2
28 30.00   NTC  2 label 2
29 30.00   NTC  5 label 2
30 30.00   NTC 10 label 2

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...