gpt4 book ai didi

r - 在 ggplot2 中缩小图形时将标签保持在固定距离

转载 作者:行者123 更新时间:2023-12-04 11:35:13 27 4
gpt4 key购买 nike

我正在可视化调查数据并比较黑人与白人学生的回答。我创建了一个函数来创建哑铃图。

dumbbell = function(df) {
ggplot(df, aes(pct_responses, Domain)) +
geom_line(aes(group=Domain)) +
geom_point(aes(color=race), size=5) +
vertical_theme + #custom theme that I made
scale_color_manual(labels = c("Black Students", "White Students"),
values=c("#073b47", "#e59918")) +
scale_x_continuous(expand = c(0, 0),
limits=c(0,100),
breaks = seq(0, 100, by=20),
labels = function(x) paste0(x,"%")) +
labs(x = "% of Affirmative Responses") +
scale_y_discrete(labels = wrap_format(40)) +
geom_text_repel(aes(label=paste0(round(pct_responses),"%")), size=3.52778, family="Georgia", nudge_y=0.3, nudge_x=1.6, segment.color=NA)
}

即使我放入 nudge_y 以使标签与彩色圆圈保持固定距离,但当我将图形保存为不同大小时,标签和圆圈之间的空间会发生变化。请参阅下面的示例:
dumbbell(df)
ggsave("test1.png", w=6.5, h=3, unit="in")
ggsave("test2.png", w=6.5, h=3.6, unit="in")

image saved at 3 inches in height

image saved at 3.6 inches in height

如何保持距离不变?

最佳答案

nudge_y=0.3将标签移动 0.3 个单位(其中每个 y 标签之间的隐式距离为 1 个单位)。但是,当以更大的物理尺寸渲染绘图时,沿轴 0.3 个单位将是更大的物理距离。您可以尝试将微调量计算为绘图渲染高度的一部分,但使用 vjust 可能更容易。 ,这将使标签靠近哑铃。这是一个示例(数据改编自 here ):

library(tidyverse)

health <- read.csv("https://raw.githubusercontent.com/selva86/datasets/master/health.csv")
health$Area <- factor(health$Area, levels=as.character(health$Area))

dat = health %>%
slice(1:3) %>%
gather(key, value, -Area)

ggplot(dat, aes(value, Area)) +
geom_line(aes(group=Area)) +
geom_point(aes(color=key), size=5) +
geom_text(aes(label=paste0(round(value*100),"%")), size=3.52778,
family="Georgia", vjust=-1.5) +
scale_y_discrete(expand=c(0.2,0)) +
theme_classic()

ggsave("test1.png", w=6.5, h=3, unit="in")
ggsave("test2.png", w=6.5, h=4, unit="in")

enter image description here
enter image description here

另一个可能更简洁的选择是在哑铃上绘制数字:
ggplot(dat, aes(value, Area)) +
geom_line(aes(group=Area)) +
geom_point(aes(color=key), size=9) +
geom_text(aes(label=paste0(round(value*100, 1),"%")), size=3.5,
family="Georgia", colour="white") +
theme_classic()

enter image description here

关于r - 在 ggplot2 中缩小图形时将标签保持在固定距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60306548/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com