#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.