2017-01-11 1 views
0

Моя цель состоит в том, чтобы поместить границу вокруг точек в scatter plot который имеет градиент цвета и градиентной формы на основе значения (как вы можете видеть в следующем сценарии).Как разместить границу вокруг точек для графика рассеяния с градиентом цвета и формы в R?

ggplot(filname, aes(Va1, Var2, col= PR, size=PR)) + 
    geom_point() + 
    labs(list(title = "Title", y = "Var2", x = "Var1")) + 
    xlim(0, 150) + 
    scale_color_gradientn(colours = rainbow(7)) + 
    scale_x_continuous(breaks=seq(0, 150, 12)) 

** PR is the third Var in my data. 

Сформированный участок enter image description here

я нашел следующие вопросы здесь:

, но на самом деле они не работают в моем случае из-за двух причин, почему я полужирный выше, я хочу, чтобы сохранить градиент цвета и градиентной формы, но в то же время добавить рамку вокруг точки, чтобы сделать их более заметнее.

В основном, чтобы сделать цвет обводки в ggplot я нашел у нас будет:

  1. заливка
  2. цвет границы

Учитывая это, когда я действую соответственно, как показано ниже

ggplot(PR_Grt100_REL_80, aes(Age, SC, col= PR, size=PR)) + 
    geom_point(aes (fill= PR), colour = "black") + 
    labs(list(title = "Title", y = "Var2", x = "Var1")) + 
    xlim(0, 150) + 
    scale_color_gradientn(colours = rainbow(7)) + 
    scale_x_continuous(breaks=seq(0, 150, 12)) 

Я бы получил следующий график!

enter image description here

Любая помощь высоко ценится?

+0

Трудно проверить без данных, но вы используете 'scale_color_gradientn', которые применяются к цвету, и я думаю, что это будет иметь смысл использовать' scale_fill_gradientn' вместо этого. Также удалите 'col = PR' в первом aes (так как вы используете заливку' geom_point' – timat

+0

@timat Спасибо, но это ничего не изменило. Что касается данных, это огромно и, к сожалению, невозможно их поместить здесь! – Daniel

+1

Вы можете добавить только первые 10 строк с помощью 'dput (head (df, 10))' или альтернативно использовать встроенный набор, подобный 'mtcars' или' iris' – Nate

ответ

2

Я думаю, что все, что вам нужно сделать, это использовать форму, которая соответствует fill и color. Формы 21:25 имеют это свойство, http://sape.inf.usi.ch/quick-reference/ggplot2/shape.

Использование mtcars:

library(ggplot2) 
ggplot(mtcars, aes(mpg, hp, fill = cyl, size = cyl)) + 
    geom_point(shape = 21, stroke = 2) + # change the thickness of the boarder with stroke 
    scale_fill_gradientn(colours = rainbow(7)) + 
    scale_size(range = c(2,6)) # only for example visibility 

enter image description here

+0

Большое спасибо. Он отлично работает! :) – Daniel

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