R 使用ggplot创建专业外观的图形
我曾尝试使用ggplot2创建一个专业外观的图形,但我在很多方面遇到了一些问题。我想为数据点添加颜色,在x轴上添加日期,并创建一条最佳拟合线或类似的线(如果可能)。我一直在Stack Exchange和Google上搜索,试图解决这个问题,但没有结果。我使用的是圣路易斯联邦储备银行(FRED)的“平民劳动力参与率:20年及以上,黑人或非裔美国人” 我使用的是RStudio,我从中导入了数据,然后使用R 使用ggplot创建专业外观的图形,r,R,我曾尝试使用ggplot2创建一个专业外观的图形,但我在很多方面遇到了一些问题。我想为数据点添加颜色,在x轴上添加日期,并创建一条最佳拟合线或类似的线(如果可能)。我一直在Stack Exchange和Google上搜索,试图解决这个问题,但没有结果。我使用的是圣路易斯联邦储备银行(FRED)的“平民劳动力参与率:20年及以上,黑人或非裔美国人” 我使用的是RStudio,我从中导入了数据,然后使用read.csv()函数将其读入RStudio。我最初使用plot()函数来绘制数据,但我想使用g
read.csv()
函数将其读入RStudio
。我最初使用plot()
函数来绘制数据,但我想使用ggplot()
函数来创建一个外观更好的图形,但是当我创建图形时,数据点看起来非常不透明、模糊和模糊,并且x轴上没有标签。我想添加最适合的颜色和线条,但我不知道怎么做
这是我用来创建没有x轴标签的图形的代码:
ggplot(data = labor, mapping = aes(x = labor$DATE, y = labor$LNS11300031)) + geom_point(alpha = 0.1)
这是我的代码生成的图形:
以下是一些示例数据(人工是我用来存储站点数据的变量):
我想将变量名LNS1130031
更改为劳动力参与率
有关数据的其他信息:
str(labor)
'data.frame': 566 obs. of 2 variables:
$ DATE : Factor w/ 566 levels "1972-01-01","1972-02-01",..: 1 2 3 4 5 6 7 8 9 10 ...
$ LNS11300031: num 77.6 78.3 78.7 78.6 78.7 79.4 78.8 78.7 78.6 78.1 ...
我希望代码能够用颜色和趋势线创建更清晰的数据点,并且能够有一个带有相应日期的x轴。下面是一个基本的尝试,以涵盖所有3个您想要的改进:
- 更清楚的一点:不要将alpha设置得太低!一点alpha有助于重叠点,但
使它们太模糊alpha=0.1
- 颜色:R可以理解简单的颜色名称,如“红色”,但也可以理解十六进制颜色代码。选择任何你想要的颜色
- 趋势线:使用
可轻松添加。我使用了stat\u smooth()
,它给出了一条直线回归线,但有更灵活的选择method='lm'
- x轴上的日期标签:确保
列正确设置为Date
类型,并使用Date
调整标签scale\u x\u Date()
以下是一个基本的尝试,可以涵盖您想要的所有3项改进:
- 更清楚的一点:不要将alpha设置得太低!一点alpha有助于重叠点,但
使它们太模糊alpha=0.1
- 颜色:R可以理解简单的颜色名称,如“红色”,但也可以理解十六进制颜色代码。选择任何你想要的颜色
- 趋势线:使用
可轻松添加。我使用了stat\u smooth()
,它给出了一条直线回归线,但有更灵活的选择method='lm'
- x轴上的日期标签:确保
列正确设置为Date
类型,并使用Date
调整标签scale\u x\u Date()
“如何使按图绘制的外观好看”是一个非常宽泛的话题,您最好从这样的东西开始,它有一些漂亮的默认外观。也就是说,你的要求非常具体,所以我认为这个问题应该得到回答。另外两个简短的评论:你的观点看起来很模糊,因为你用
alpha=0.1
使它们模糊!确保该选项正在执行您希望它执行的操作。你确实有x轴标签,只是你有这么多的标签,它们都混合成了一团无法阅读的混乱。“我如何让绘图看起来很好”是一个非常广泛的概念,你最好从这样的东西开始,它的外观有一些很好的默认值。也就是说,你的要求非常具体,所以我认为这个问题应该得到回答。另外两个简短的评论:你的观点看起来很模糊,因为你用alpha=0.1
使它们模糊!确保该选项正在执行您希望它执行的操作。你确实有x轴标签,只是你有这么多的标签,它们都混合成了一团无法阅读的混乱。非常感谢你,马吕斯,我真的很感谢你的及时帮助,你完全回答了我的问题,并补充了我不知道的信息,但很高兴你包括在内,并补充了我需要理解前进需要做什么的解释。再次感谢!!!我能不能把非裔美国人的女性劳动力参与率也加进去?我使用了与您相同的quantmod包quantmod::getSymbols(“LNU01300032”,src=“FRED”),然后我创建了一个新变量labor2,与您对labor变量所做的完全相同,我只是用LNU01300032替换了LNS1130031,但现在我不知道如何在使用ggplot时将两个图都添加到图形中。@Pierreforcois是的,一种方法是在现有图形中添加另一个几何点和统计平滑,并在新几何中设置“data=labor2”。非常感谢马吕斯,我非常感谢你的及时帮助,您完整地回答了我的问题,并添加了我不知道的信息,但很高兴您将其包括在内,并添加了我需要的解释,以了解我需要做些什么。再次感谢!!!我能不能把非裔美国人的女性劳动力参与率也加进去?我使用了与您相同的quantmod包quantmod::getSymbols(“LNU01300032”,src=“FRED”),然后我创建了一个新变量labor2,与您对labor变量所做的完全相同,我只是用LNU01300032替换了LNS1130031,但现在我不知道如何在使用ggplot时将两个图都添加到图形中。@Pierreforcois是的,一种方法是将另一个geom_点和stat_平滑添加到现有图形中,并在新的geom中设置“data=labor2”
str(labor)
'data.frame': 566 obs. of 2 variables:
$ DATE : Factor w/ 566 levels "1972-01-01","1972-02-01",..: 1 2 3 4 5 6 7 8 9 10 ...
$ LNS11300031: num 77.6 78.3 78.7 78.6 78.7 79.4 78.8 78.7 78.6 78.1 ...
quantmod::getSymbols("LNS11300031", src="FRED")
# Your data is available from the quantmod package
labor = LNS11300031 %>%
as.data.frame() %>%
rownames_to_column(var = "DATE") %>%
# Make sure DATE is a Date column
mutate(DATE = as.Date(DATE))
# Generally, you don't use data$column syntax within ggplot,
# just give the column name
ggplot(data = labor, mapping = aes(x = DATE, y = LNS11300031)) +
geom_point(alpha = 0.7, colour = "#B07AA1") +
stat_smooth(method = "lm", colour = "#E15759", se = FALSE) +
scale_x_date(date_breaks = "5 years", date_labels = "%Y") +
theme_minimal()