R 正确编写绘制次轴公式

R 正确编写绘制次轴公式,r,ggplot2,R,Ggplot2,在R ggplot2中需要一个次轴,但公式不正确。 我在谷歌搜索中找不到类似的问题。 这就是工作原理: 所以,次轴是 c(0.00000, 66.03774, 92.45283, 98.11321, 100.00000, 98.11321) 在这个例子中。这个想法是在图表的右边有一个索引 这允许找到给定值的70-80%范围 我尝试了不同版本的I(),但没有成功。 欢迎提出任何意见。此外,任何更全面地解释函数公式部分的文档 欢迎光临?公式在这方面对我帮助不大。类似这样的东西 # ins

在R ggplot2中需要一个次轴,但公式不正确。 我在谷歌搜索中找不到类似的问题。 这就是工作原理:


所以,次轴是

c(0.00000,  66.03774,  92.45283,  98.11321, 100.00000,  98.11321)
在这个例子中。这个想法是在图表的右边有一个索引 这允许找到给定值的70-80%范围

我尝试了不同版本的
I()
,但没有成功。 欢迎提出任何意见。此外,任何更全面地解释函数公式部分的文档 欢迎光临?公式在这方面对我帮助不大。

类似这样的东西

# install.packages(c("tidyverse"), dependencies = TRUE)
library(dplyr)
mydata %>% mutate(y2 = (y -min(y))* 100/(max(y)- min(y))) %>%  
   ggplot(aes(x = x, y = y2)) + 
        geom_point(shape = 21,size = 5,color = "black",fill = "orange",stroke = 1) + 
        scale_x_continuous(name = 'Number of Contacts') + 
        scale_y_continuous(name="Remembered (%)", 
     sec.axis = sec_axis(trans = ~. +10,name = "Remembered (Index)"))

公式中的
是您的
y
。您只需将公式中的
y
替换为

公式为:

~ (.-min(.))*100/(max(.)-min(.))
在您的示例中,它为您提供了:

mydata <- data.frame(x = c(0, 1, 2, 3, 4, 5), 
                     y = c(20, 55, 69, 72, 73, 72))
library(ggplot2)
ggplot(data = mydata, aes(x = x, y = y)) +
  geom_point(shape = 21,size = 5,color = "black",fill = "orange",stroke = 1) +
  scale_x_continuous(name = 'Number of Contacts') +
  scale_y_continuous(name="Remembered (%)", 
                     sec.axis = sec_axis(trans = ~ (.-min(.))*100/(max(.)-min(.)),
                                         name = "Remembered (Index)"))

mydata感谢您提供此解决方案!然而,我需要两种尺度:一个图表中的原始值和转换值。我意识到我没有正确阅读你的问题。我认为托马斯的回答回答了你的问题。如果你想了解更多关于R中公式的信息:。谢谢,托马斯,这正是我想要的。从?公式信息来看,我不清楚这一点。是主y轴的符号。你的解释更清楚了。嗨,ButuHuter如果这个或任何答案都解决了你的问题,请点击检查标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。
~ (.-min(.))*100/(max(.)-min(.))
mydata <- data.frame(x = c(0, 1, 2, 3, 4, 5), 
                     y = c(20, 55, 69, 72, 73, 72))
library(ggplot2)
ggplot(data = mydata, aes(x = x, y = y)) +
  geom_point(shape = 21,size = 5,color = "black",fill = "orange",stroke = 1) +
  scale_x_continuous(name = 'Number of Contacts') +
  scale_y_continuous(name="Remembered (%)", 
                     sec.axis = sec_axis(trans = ~ (.-min(.))*100/(max(.)-min(.)),
                                         name = "Remembered (Index)"))