使用列作为R中的x轴打印数据?

使用列作为R中的x轴打印数据?,r,ggplot2,R,Ggplot2,我有一个如下所示的数据框架 “年”列数据分类为数字,但“国家”列数据分类为分类(这会有问题吗?) 我想能够线图一个特定国家的销售随着时间的推移 df <- read.table(header=TRUE,text=' Country Sales Year USA 956 2018 USA 855 2017 UK 635 2018 UK 588 2017 ')

我有一个如下所示的数据框架

“年”列数据分类为数字,但“国家”列数据分类为分类(这会有问题吗?)

我想能够线图一个特定国家的销售随着时间的推移

df <- read.table(header=TRUE,text='
    Country   Sales   Year
    USA       956     2018
    USA       855     2017
    UK        635     2018
    UK        588     2017
')

最好使用带有函数print的for循环来绘制图形


#get colnames of dataframe (df) to make a list of variable names to loop over.
colNames <- names(df)

#Variable you want on your x axis
X <- df$Year


#获取dataframe(df)的colnames,以列出要循环的变量名。
colNames@Vivid

尝试使用下面的代码:

df1  %>%
  ggplot(aes(x=Year, y=Sales)) + 
  geom_line() +
  facet_grid(. ~ Country)

你能进一步解释你想要的结果吗?你希望X轴是年,颜色是国。。。。或者您希望有几个输出图表(另存为PNG?),每个国家一个。。。或者?
ggplot(data=dataframe,aes(x=Year,y=Sales,col=Year))+geom_point()+facet_wrap(~Country)
这就是您要找的吗?@Dave2e-嗨,谢谢您的帮助。这确实创造了我正在寻找的情节系列!但是,不同国家之间y轴的比例非常不同。你知道有一个函数可以让我选择一个特定的国家,比如说如果我只想通过时间输出美国的数据吗?如果运气不好,我尝试将您的代码修改为
df%>%ggplot(df$Country=='USA',aes(x=Year,y=Sales))+geom_point()
以选择一个特定的国家,这将起作用:
data=df[df$Country=='USA',]%>%ggplot(aes(x=Year,y=Sales))
谢谢您,Dave2e!这篇文章有更多关于循环和绘图的细节,我觉得这很有帮助
#then for every variable in your list, print the desired plot
for(i in colNames){
  plt <- ggplot(df, aes_string(x= X, y=i)) +
geom_point() + theme(axis.title.x = element_blank(),
        axis.text.x = element_blank(),
        axis.ticks.x = element_blank())
  print(plt)
  Sys.sleep(2)
}

df1  %>%
  ggplot(aes(x=Year, y=Sales)) + 
  geom_line() +
  facet_grid(. ~ Country)