R 减少ggplot2中离散轴记号之间的空间

R 减少ggplot2中离散轴记号之间的空间,r,ggplot2,data-visualization,R,Ggplot2,Data Visualization,我试图在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 <- ifel

我试图在
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())
数据添加
expand=c(0,20)
scale\u x\u 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

数据我尝试了
主题(aspect.ratio=x)
坐标固定
,但它弄乱了文本和片段的大小和位置。你认为它怎么样?