我的课程有一个作业,我需要用txhousing数据集做一个ggplot,但对我来说这行不通,我不断出错或没有结果。这是练习:
这是销售和月份的散点图
插入一个新的r块以绘制该图
使用功能ggplot()(检查此功能的帮助文件)
使用na.omit(txhousing)作为数据参数
在aes参数中,将月份放在x轴上,将log(sales)放在 y轴
使用geom_point生成一条线
r块运行正常后,将其复制并
将aes(color = year)添加到几何中。
复制最新的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
和月份的散点图,但是到目前为止,我得到的是一个带有轴上变量名称的图形,但是它是蓝色的图形的原点上有一个点,并有一个图例,说明什么颜色代表什么年份。
答案 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
时,您还需要删除月份和日志销售前后的报价。