ggplot不会给出图表

时间:2019-06-11 12:25:38

标签: r ggplot2

我的课程有一个作业,我需要用txhousing数据集做一个ggplot,但对我来说这行不通,我不断出错或没有结果。这是练习:

这是销售和月份的散点图

  1. 插入一个新的r块以绘制该图

  2. 使用功能ggplot()(检查此功能的帮助文件)

  3. 使用na.omit(txhousing)作为数据参数

  4. 在aes参数中,将月份放在x轴上,将log(sales)放在 y轴

  5. 使用geom_point生成一条线

  6. r块运行正常后,将其复制并

  7. 将aes(color = year)添加到几何中。

  8. 复制最新的r块,并将geom_smooth添加到图中

我尝试多次更改ggplot编码,但除了图表中间的简单点之外,我没有做过其他事情。因为当我尝试geom_point时,ggplot甚至无法正常工作,所以我也没有添加geom_smooth

library(tidyverse)
summary(txhousing)
na.omit(txhousing)
txhousing<- as.data.frame(txhousing)
txhousing %>% mutate(logsales= log(txhousing$sales))
ggplot(na.omit(txhousing), aes("month", "logsales")) +
  geom_point(aes(color=year))

我希望从logsales数据中得到txhousing和月份的散点图,但是到目前为止,我得到的是一个带有轴上变量名称的图形,但是它是蓝色的图形的原点上有一个点,并有一个图例,说明什么颜色代表什么年份。

2 个答案:

答案 0 :(得分:1)

您在这里遇到一些问题。从底部开始

ggplot(na.omit(txhousing), aes("month", "logsales")) + geom_point(aes(color=year))

aes 中的变量 names 必须不加引号。照原样,ggplot实际上是在绘制“月”对“ logsales”。即两个分类量表上的单个点。因此,请删除引号。

第二,当ggplot失败时,检查您的输入。 na.omit(txhousing)是什么样的?这引出了下一点:

txhousing %>% mutate(logsales= log(txhousing$sales)) 

不执行您期望的操作。当然,您可以计算刻度的对数。但是您并没有保存结果。您应该这样做:

txhousing <- txhousing %>% mutate(logsales = log(sales))

或使用magrittr包(可以通过tidyverse加载):

txhousing %<>% mutate(logsales= log(sales))

看看我如何从功能中遗漏txhousing$吗?这是因为mutate会在其输入data.frame(即,将数据.frame传递到mutate中)中查找变量。

最后,您可以指示ggplot使用对数标度,而无需预先计算对数:

ggplot(na.omit(txhousing), aes(month, sales)) +
  geom_point(aes(color=year)) +
  scale_y_log10()

答案 1 :(得分:0)

稍微清理一下代码后,您可以看到关键问题是使用logsales列创建了一个数据框,但是没有将其分配给任何内容:

library(tidyverse)

txhousing <- txhousing %>% 
  mutate(logsales = log(sales))

ggplot(data = na.omit(txhousing)) +
  geom_point(mapping = aes(x = month, y = logsales, color = year))

在提供aes时,您还需要删除月份和日志销售前后的报价。