Как мне написать функцию для графика в ggplot2, используя правильно AES? - PullRequest
0 голосов
/ 04 декабря 2018

Я просмотрел много ответов, но все еще возникают проблемы при программировании функции для сюжета в ggplot2.Вот пример набора данных:

 d<-data.frame(replicate(2,sample(0:9,1000,rep=TRUE)))
 colnames(d)<-c("fertilizer","yield")

Теперь я пишу следующую функцию - я хочу дать функции только x и y:

test <- function(explanatory,response)
{
plot<- ggplot(d, aes(x =explanatory, y=response)) +
  geom_point()+ 
  ggtitle("Correlation between Fertilizer and Yield")  +
  theme(plot.title = element_text(size = 10, face = "bold"))+
  geom_smooth(method=lm, se=FALSE) + 
  annotate("text", x=800, y=20, size=5,label= cor6) 
plot
}

Когда я вызываю эту функцию с этим,

test("fertilizer","yield")

Я получаю график без точек рассеяния, как это:

Graph I get

Может ли кто-нибудь помочь мне?Я очень хочу научиться писать функции в R.

Ответы [ 3 ]

0 голосов
/ 04 декабря 2018

Изменить метку = cor6 tp label = "cor6"

Также в:

annotate("text", x=800, y=20, size=5,label= cor6) 

x, y изменить диапазон вашего графика, ваши значения перейти от 1 до 9, удалитьих или установите в соответствии с вашим диапазоном переменных

0 голосов
/ 04 декабря 2018

Если вы используете enquo и !!, кавычки не нужны.

 test <- function(explanatory,response)
{
  explanatory <- enquo(explanatory)
  response <- enquo(response)
  plot <- 
    ggplot(d, aes(x = !!explanatory, y = !!response)) +
      geom_point()+ 
      ggtitle("Correlation between Fertilizer and Yield")  +
      theme(plot.title = element_text(size = 10, face = "bold"))+
      geom_smooth(method=lm, se=FALSE) + 
      annotate("text", x=800, y=20, size=5,label= 'cor6') 
  plot
 }

 test(fertilizer, yield)
0 голосов
/ 04 декабря 2018

Используйте aes_string вместо aes.Он должен работать.Работал для меня:)

Примечание: удалите кавычки вокруг ваших аргументов в определении функции.Также ваш cor6 должен быть в кавычках.Смотри ниже

test <- function(explanatory,response)
{
plot<- ggplot(d, aes_string(x =explanatory, y=response)) +
  geom_point()+ 
  ggtitle("Correlation between Fertilizer and Yield")  +
  theme(plot.title = element_text(size = 10, face = "bold"))+
  geom_smooth(method=lm, se=FALSE) + 
  annotate("text", x=800, y=20, size=5,label= "cor6") 
plot
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...