gpt4 book ai didi

减少 ggplot2 中离散轴刻度之间的空间

转载 作者:行者123 更新时间:2023-12-01 12:20:22 25 4
gpt4 key购买 nike

我试图在 ggplot2 中绘制彼此平行的两个尺度如下。

data <- rbind(data.frame(type = "norm", value = 0:100, label = 0:100),
data.frame(type = "trans", value = asin(0:100/100) *100, label = 0:100))

data <- data[data$label %% 1 == 0,]
data$size <- ifelse(data$label %% 10 == 0, 0.2,
ifelse(data$label %% 5 == 0, 0.1,
0.05))
data$R <- ifelse(data$type == "norm",
as.numeric(data$type) - data$size,
as.numeric(data$type))
data$L <- ifelse(data$type == "trans",
as.numeric(data$type) + data$size,
as.numeric(data$type))
data$Txt <- ifelse(data$type == "norm",
data$L - 0.3,
data$R + 0.3)

g <- ggplot(data, aes(x = type, y = value)) +
geom_line(aes(group = type)) +
scale_x_discrete("type", labels = parse(text = levels(data$type))) +
annotate("segment", x = data$L, xend = data$R,
y = data$value,
yend = data$value) +
annotate("text", x = data[data$label %% 10 == 0,]$Txt,
y = data[data$label %% 10 == 0,]$value,
label = data[data$label %% 10 == 0,]$label) +
theme_minimal() +
theme(axis.text.y = element_blank(),
axis.title = element_blank(),
axis.text.x = element_text(colour = "black",
size = 12),
plot.margin = unit(c(0.5,0.5,0.5,0.5), "cm"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank())

enter image description here

保留纵横比和大小,如何减少 norm之间的空间和 trans缩放以获得以下所需的结果? enter image description here

最佳答案

已添加 expand=c(0,20)scale_x_discrete并操纵其他输入。到目前为止,代码看起来像:

data <- data[data$label %% 1 == 0,]
data$size <- ifelse(data$label %% 10 == 0, 4,
ifelse(data$label %% 5 == 0, 2,
1))
data$R <- ifelse(data$type == "norm",
as.numeric(data$type) - data$size,
as.numeric(data$type))
data$L <- ifelse(data$type == "trans",
as.numeric(data$type) + data$size,
as.numeric(data$type))
data$Txt <- ifelse(data$type == "norm",
data$L - 6,
data$R + 6)

g <- ggplot(data, aes(x = type, y = value)) +
geom_line(aes(group = type)) +
scale_x_discrete("type",
expand=c(0,20)) +
annotate("segment", x = data$L, xend = data$R,
y = data$value,
yend = data$value) +
annotate("text", x = data[data$label %% 10 == 0,]$Txt,
y = data[data$label %% 10 == 0,]$value,
label = data[data$label %% 10 == 0,]$label) +
theme_minimal() +
theme(axis.text.y = element_blank(),
axis.title = element_blank(),
axis.text.x = element_blank(),
plot.margin = unit(c(0.5,0.5,0.5,0.5), "cm"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank())
g

enter image description here

关于减少 ggplot2 中离散轴刻度之间的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44859435/

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