在 R 中使用 ggplot2 复制图形

Posted

技术标签:

【中文标题】在 R 中使用 ggplot2 复制图形【英文标题】:Replicate graph using ggplot2 in R 【发布时间】:2021-12-10 12:00:51 【问题描述】:

我必须在 R 中使用 ggplot2 复制下图

这是我的尝试:

library(dplyr)
library(scales)
d <- data.frame(x=c(4.5,9,5.5), y=c(3.5,2.5,8))
f <- data.frame(x=c(9,10,5.5), y=c(2.5,2.5,8))
df <- 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 <- 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)

给出以下情节

现在很明显

    我的虚线看起来很古怪 我的 x 轴应该更大 有一条白线穿过我的多边形

如何修复我的图表?

【问题讨论】:

【参考方案1】: 将多边形中的color="white" 更改为color = "#AED9E6" 应该注意白线,方法是将边缘绘制成与填充相同的颜色(或者,使用一组顶点而不是指定多边形作为两个三角形的并集...) 我不确定你认为虚线有什么“古怪” 更改纵横比和/或文本和特征的相对大小的最简单方法是使用指定高度和宽度的ggsave()

【讨论】:

【参考方案2】:

问题(对于第 1 项和第 2 项)不在于您使用 ggplot,而在于未能按预期设置输出设备。它是控制您的纵横比的设备。虚线的抖动是由于设备的低分辨率(这可能是具有低分辨率输出的计算机的默认屏幕设备)。您可以通过增加“像素密度”(dpi)来控制它。 (我不需要增加 png 设备的默认值,因为它已经创建了更好的破折号再现,但如果需要,您可以使用帮助页面中列出的参数对其进行修改:?png

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

BB已经描述了如何修复交叉路口的白线。

【讨论】:

以上是关于在 R 中使用 ggplot2 复制图形的主要内容,如果未能解决你的问题,请参考以下文章

这位兄台,数据可视化,ggpolt2了解下!

如何使用 ggplot2 在 R 中制作具有透明背景的图形?

使用 ggplot2 在 R 中保持一致的图形大小(图例和轴改变大小)

R语言ggplot2可视化在图形中添加箭头:直线箭头弧形箭头

数据可视化 | 使用R语言绘制专业图表(Ⅰ)——ggplot2 图形语法基础

如何使用 R markdown 将 ggplot2 图形正确渲染成单词?