Реплицируйте график с помощью ggplot2 в R

#r #ggplot2 #plot #dplyr

Вопрос:

Я должен воспроизвести следующий график, используя ggplot2 в R введите описание изображения здесь

Это моя попытка:

 library(dplyr) library(scales) d lt;- data.frame(x=c(4.5,9,5.5), y=c(3.5,2.5,8)) f lt;- data.frame(x=c(9,10,5.5), y=c(2.5,2.5,8)) df lt;- data.frame(x1 = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) , y1 = c(1, 4, 2.5, 4.5, 5.5, 8.5, 2.5, 1, 1.5, 2.5), x2 = 1:10, y2 = 1:10, x3 = c(2.1875, 5.8125, 6.25, 8.125, 9.3125), y3 = c(7.5, 6.375, 3, 3.875, 2.1875), x4 = c(1.3125, 1.5, 1.6875, 3.6875, 7.25), y4 = c(7.1875, 9.9375, 9.0625, 9.375, 3.8125)) grafico_4 lt;- ggplot(df)    ggtitle("Grafico variado")    theme(plot.title = element_text(size = 10))    theme(panel.background = element_rect(fill='white', colour='white'))    theme( axis.line = element_line(colour = "black", size = 0.5))    scale_y_discrete(limits = c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10"))    scale_x_discrete(limits = factor(1:10), labels = c("uno", "", "tres", "", "cinco", "", "siete", "", "nueve", ""))    geom_polygon(data = d, mapping=aes(x = x, y = y), color = "white", alpha = 3, fill = "#AED9E6")    geom_polygon(data = f, mapping=aes(x = x, y = y), color = "white", alpha = 3, fill = "#AED9E6")    geom_hline(yintercept = 5, linetype = "dotted")    xlab("")    ylab("")    geom_line(aes(x = x1, y = y1), size = 1, alpha = 0.9, linetype = 2)     geom_point(aes(x = x2, y = y2), shape = 1)    geom_point(aes(x = x3, y = y3), shape = 1, color = "red")    geom_point(aes(x = x4, y = y4), shape = 3, color = "green", size = 0.8)    annotate(geom = "text", x = 1.7, y = 7.5, label = "cinco", color = "purple", size = 3)    annotate(geom = "text", x = 2, y = 6, label = "dos", color = "yellow", size = 3)    annotate(geom = "text", x = 6.625, y = 9.125, label = "cuatro", color = "blue", size = 3)    annotate(geom = "text", x = 7.875, y = 2, label = "tres", color = "green", size = 3)   

что дает следующий сюжет

введите описание изображения здесь

Теперь очевидно, что

  1. Моя пунктирная линия выглядит странно
  2. Моя ось x должна быть больше
  3. Через мой многоугольник проходит белая линия

Как я могу исправить свой график?

Ответ №1:

  • Изменение color="white" на color = "#AED9E6" в ваших многоугольниках должно позаботиться о белой линии, если края будут нарисованы тем же цветом, что и заливка (или укажите многоугольник с одним набором вершин, а не как объединение двух треугольников …)
  • Я не уверен, что вы считаете «странным» в своих пунктирных линиях
  • самый простой способ изменить соотношение сторон и/или относительный размер текста и объектов- ggsave() использовать заданные высоту и ширину.

Ответ №2:

Проблема (для пунктов 1 и 2) заключается не в использовании вами ggplot, а скорее в том, что вы не смогли настроить устройство вывода так, как ожидали. Это устройство, которое управляет вашим соотношением сторон. Неустойчивость пунктирных линий обусловлена низким разрешением вашего устройства (которое может быть устройством экрана по умолчанию для компьютера с низким разрешением вывода). Вы можете контролировать это, увеличивая «плотность пикселей» (dpi). (Мне не нужно было увеличивать значение по умолчанию для png устройства, потому что оно уже создает лучшее отображение тире, но при необходимости вы можете изменить его, используя параметры, перечисленные на странице справки: ?png

 png("test",width=700, height=480)  grafico_4  dev.off()  

введите описание изображения здесь

BB уже описал, как исправить белую линию на пересечении.