Как мне добавить текст на график gtrendsR?

#r #plot #gtrendsr

#r #график #gtrendsr

Вопрос:

Я пытаюсь создавать графики с использованием пакета gtrendsR. Всякий раз, когда я пытаюсь использовать plot() функцию, график, который возвращает R, похоже, игнорирует любые текстовые аргументы, которые я помещаю в него, main=" ", xlab=" " or ylab=" " и это моя проблема.

Я также пытался использовать ggplot() вместо этого.

Вот код:

 library(gtrendsR)
library(ggplot2)


fruits<- gtrends(c("Banana", "Apple", "Orange"), geo = c("US"), time = "2019-03-13 2019-03-27")

plot(fruits, main="I tried so hard", xlab="and got so far", ylab="but in the end")

ggplot(fruits)

ggplot(fruits$interest_over_time)
 

Но результат был еще хуже, так как plot() все еще дает мне график, а ggplot() ничего не возвращает.

Ответ №1:

Я только что нашел этот учебник, анализирующий Google Trends с помощью R: получение и построение графика с помощью gtrendsR, в котором описано то же самое, что я сделал здесь, но более подробно, это может быть отличным началом для вас!


fruits нет фрейма данных
Когда вы вызываете class(fruits) if даст "gtrends" "list" возможность построить его, вы должны извлечь нужную информацию из этого объекта в формате dataframe. Чтобы увидеть, какие фреймы данных находятся в объекте, выполните View(fruits) , например, если вы работаете в Rstudio, или просто введите fruits$ и нажмите tab.

введите описание изображения здесь

Я понятия не имею, какую информацию вы хотите? Но, допустим, вы хотите построить график interest_by_region , тогда мы получим фрейм данных с помощью fruit.df <- fruits$interest_by_region

Построение графика
Опять же, из вашего вопроса неясно, что вы хотите отобразить, но теперь у вас есть dataframe ( fruit.df ), который вы можете отображать, что хотите, используя ggplot2 , например:

 fruit.df <- fruits$interest_by_region
ggplot(fruit.df, aes(x=location, y=hits, fill = keyword))  
  geom_bar(stat='identity')  
  coord_flip()  
  ggtitle("I tried so hard")  
  xlab("and got so far")  
  ylab("but in the end")
 

Что даст вам этот график:

введите описание изображения здесь
P.s. спасибо «Linkin Park- в конце» для main, xlab и ylab, хахах

Краткие сведения
Итак, что вам нужно сделать, это:

  • Получить фрейм данных из объекта gtrends, который может быть либо interest_over_time , interest_by_region , interest_by_dma , interest_by_city либо related_queries . Сделайте это, как я описал для interest_by_region
  • Создайте все, что вы хотите, из этого фрейма данных, используя ggplot2 (см. Руководство по ggplot2, если вы не уверены, как это сделать)

Ответ №2:

Вы должны использовать labs функцию пакета ggplot2 , как в :

 plot(fruits)   labs(title = "I tried so hard", x = "and got so far", y = "but in the end")
 

какие результаты :

введите описание изображения здесь

Объяснение: график функции используется для gtrendsR объекта, и, следовательно, используемый метод gtrendsR::plot.gtrends построения имеет следующее определение :

 function (x, ...) 
{
    df <- x$interest_over_time
    df$hits <- if (typeof(df$hits) == "character") {
        as.numeric(gsub("<", "", df$hits))
    }
    else {
        df$hits
    }
    df$legend <- paste(df$keyword, " (", df$geo, ")", sep = "")
    p <- ggplot(df, aes_string(x = "date", y = "hits", color = "legend"))   
        geom_line()   xlab("Date")   ylab("Search hits")   ggtitle("Interest over time")   
        theme_bw()   theme(legend.title = element_blank())
    print(p)
    invisible(p)
}
 

как вы можете видеть, метод использует ggplot2 пакет для построения графика (а не базового графика R) и уже указывает лаборатории в :

 xlab("Date")   ylab("Search hits")   ggtitle("Interest over time")
 

который должен быть переопределен в вашем случае. Для вашей информации мы используем функцию labs вместо ggtitle , xlab и ylab поскольку это новый способ выполнения (см. https://ggplot2.tidyverse.org/reference/labs.html ) но мы могли бы написать :

 plot(fruits)   ggtitle("I tried so hard")   xlab("and got so far")   ylab("but in the end")
 

Комментарии:

1. Аааа, не знал, что gtrends у него есть собственная функция построения графика (никогда не использовал gtrends), это намного проще, чем меньше опыта в R, хорошо! Всегда ли функция plot, которую вы вставили, отображает интерес с течением времени?

2. да! это необходимо, поскольку возвращает gtrendsR::gtrends список, имена элементов которого являются «interest_over_time», «interest_by_country», «interest_by_region», «interest_by_dma», «interest_by_city», «related_topics» и «related_queries», и единственный способ использовать базовый график ( graphics::plot.default ) в списке — это иметь элемент»x» и «y» в списке (чего здесь нет). Также вывод plot(fruits) явно выглядит как график ggplot2, что является еще одним признаком того, что для объекта gtrends был определен специальный метод plot.