正确编写ggplot辅助轴公式

时间:2018-01-30 09:11:18

标签: r ggplot2

我需要R ggplot2中的辅助轴,并且无法使公式正确。 我无法在Google搜索中找到类似的问题。 这是有效的:

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 = ~. +10,name = "Remembered (Index)"))

Endorsement Policy 但是,我在sec_axis部分中的公式更复杂,应该类似于

secondary axis =  (y - min(y)) * 100/(max(y)- min(y))

所以辅助轴是

c(0.00000,  66.03774,  92.45283,  98.11321, 100.00000,  98.11321)
在这个例子中

。想法是在图的右侧有一个索引 这允许找到给定值的70-80%范围。

我尝试了不同版本的I(),但徒劳无功。 欢迎任何想法。还有任何文件更彻底地解释了函数的公式部分 会受到欢迎。 ?公式在这方面对我没什么帮助。

2 个答案:

答案 0 :(得分:2)

公式中的.是您的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)"))

答案 1 :(得分:0)

这样的事,

SELECT CONCAT('{ rows:[', result, ']}') AS result1 FROM
(
SELECT GROUP_CONCAT('{', jsondata, '}' SEPARATOR ',') AS result FROM
(
  SELECT 
    CONCAT
    (
      '"A":'   , A  , ',' 
      '"B":', B, ','
      '"C":'  , C
    ) AS jsondata
  FROM test
) AS jsondata
) AS jsonsdata1;

yha