Подтвердить что ты не робот

Толщина границы контрольной точки в ggplot

При использовании ggplot я могу установить shape в 21-25, чтобы получить фигуры, которые имеют независимую настройку для внутренних цветов (fill) и границ (col), например:

df <- data.frame(id=runif(12), x=1:12, y=runif(12))
ggplot(df, aes(x=x, y=y)) + 
  geom_point(aes(fill=id, size=id), colour="black", shape=21)

enter image description here

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

ggplot(df, aes(x=x, y=y)) + 
  geom_point(aes(fill=id, size=id), colour="black", shape=21, lwd=2)

enter image description here

Как контролировать толщину границы?

4b9b3361

Ответ 1

Начиная с версии 2.0.0 ggplot2, существует аргумент для контроля толщины границы точки. Из файла NEWS.md:

geom_point() получает эстетику штриха, которая контролирует ширину границы фигур 21-25 (# 1133, @SeySayux). размер и ход являются аддитивными, поэтому точка с размером = 5 и штрих = 5 будет иметь диаметр 10 мм. (# Тысячи сто сорок две)

Таким образом, правильное решение для этого теперь:

df <- data.frame(id=runif(12), x=1:12, y=runif(12))
ggplot(df, aes(x=x, y=y)) + 
  geom_point(aes(fill=id, size=id), colour="black", shape=21, stroke = 2)

Вывод

Ответ 2

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

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

ggplot(df, aes(x=x, y=y)) + 
  geom_point(aes(size=id+0.5), colour="black" , show_guide = FALSE )+
  scale_size( guide = "none" )+
  geom_point(aes(fill=id, size=id), colour="black", shape=21)

enter image description here

Ответ 3

Другим решением является создание графика в R, а затем его экспорт в файл .svg. Ширина линии затем может быть изменена с помощью программного обеспечения для редактирования векторной графики (например, Inkscape). Этот метод особенно полезен, когда точки данных перекрываются.