Многострочные графики в ggplot с разными цветами точек и легендами для линий и точек - PullRequest
3 голосов
/ 10 марта 2020

У меня есть следующий набор данных

data = data.frame(tmu = c(0.1164966,0.01649658, 0.605479878,0.073743729, 0.21649659,0.543409994,0.1164966,0.01649658,0.605479878,
                  0.073743729,0.21649659,0.543409994,0.1164966,0.01649658,0.605479878, 0.073743729, 0.21649659,0.543409994)
                  , Method = c( rep('M1', 6), rep('M2', 6), rep('M3', 6)),
                  Value = c(1.140242, 1.016913, 2.211742,1.07824, 1.312171, 1.872045,1.131858,1.016773, 1.982265,1.077372, 1.276319,
                            1.771913,1.131858, 1.016773,1.932845, 1.077338,  1.276319, 1.756129),
                  cases = rep(c('A', 'B', 'C', 'D', 'E', 'F'),3))

Я использовал следующий код для генерации приведенного ниже графика.

pd <- position_dodge(width = 0.4)

ggplot(data, aes(x=tmu, y=Value, color=Method)) + 
  geom_line(size = .3, position = pd) +
  geom_point(size = 2, shape = 18, position = pd) +
  labs(fill = "") +
  theme(legend.position="bottom")

enter image description here Как вы можете вижу, что у меня есть шесть разных случаев. У меня вопрос, как я могу иметь разные цвета для точки (чехлы), а также иметь другую легенду?

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

1 Ответ

3 голосов
/ 10 марта 2020

Вы можете различать точки и линии, используя аргумент fill и color, например. Цвет линий и заливка для точек при выборе формы точек, которые допускают заливки (например, shape = 21):

ggplot(data, aes(x=tmu, y=Value, color = Method, group = Method)) + 
  geom_line(size = .3, position = pd) +
  geom_point(aes(fill = cases),color = "black", shape = 21,size = 2, position = pd) +
  labs(fill = "") +
  theme(legend.position="bottom")

Или вы можете передавать различные color аргументы в geom_line и geom_point :

ggplot(data, aes(x=tmu, y=Value, group = Method)) + 
  geom_line(aes(color = Method), size = .3, position = pd) +
  geom_point(aes(color = cases),size = 2, shape = 18, position = pd) +
  labs(fill = "") +
  theme(legend.position="bottom")

Отвечает ли он на ваш вопрос?


Примечание: по некоторым причинам я не могу загрузить изображения выходного графика ... извините за это

...