簡體   English   中英

如何打破 x 軸,同時每側兩個 y 軸具有不同的比例?

[英]How to break x-axis while two y axes on each side with different scales?

我在下面提供了一個我試圖解決的問題的例子。 如您所見,我在圖表中間有 y 軸名稱。 有什么辦法可以刪除那些 y 軸名稱嗎? 提前致謝。

library(ggbreak) 
library(patchwork)
library(ggplot2)
x = c(0,0.1,0.5, 2, 3, 5, 7, 10, 100)
y1 = c(892, 1059, 1004, 1020, 1097,  903,  881,1096,  910)
y2 = c(2070, 2183, 2381, 2406, 2675, 2639, 2662, 2523, 2453)

data = data.frame(x=x, y1 = y1, y2 = y2)
ggplot(data=data,aes(x = x ,y=y1))+
  geom_point(aes(y=y1), color = "black")+
  geom_point(data = data,aes(x=x,y=y2),colour="blue")+
  scale_y_continuous("Y1", sec.axis = sec_axis(y2~ .*(5)  , name = "Y2"))+
  xlab("x") +
  ylab("")+
  expand_limits(x = 0, y = 0)+
  scale_x_break(c(12, 90))

在此處輸入圖像描述

除了使用ggbreak ,一個選項是僅使用ggplot2patchwork ,它讓您“完全”控制軸的樣式,添加和刪除軸標簽,...:

library(patchwork)
library(ggplot2)

p <- ggplot(data = data, aes(x = x, y = y1)) +
  geom_point(aes(y = y1), color = "black") +
  geom_point(data = data, aes(x = x, y = y2), colour = "blue") +
  labs(x = "x", y = NULL) +
  expand_limits(x = 0, y = 0)

p1 <- p + 
  scale_y_continuous("Y1", sec.axis = sec_axis(y2 ~ . * (5), name = NULL)) +
  coord_cartesian(xlim = c(NA, 12))

p2 <- p + 
  scale_y_continuous(name = NULL, sec.axis = sec_axis(y2 ~ . * (5), name = "Y2")) +
  coord_cartesian(xlim = c(90, NA)) +
  theme(axis.text.y = element_blank(), axis.ticks.y = element_blank())

p1 + p2

嘗試:

+theme(axis.title.y = element_blank())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM