在 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 复制图形的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 ggplot2 在 R 中制作具有透明背景的图形?
使用 ggplot2 在 R 中保持一致的图形大小(图例和轴改变大小)
R语言ggplot2可视化在图形中添加箭头:直线箭头弧形箭头