R 使用ggplot创建专业外观的图形

R 使用ggplot创建专业外观的图形,r,R,我曾尝试使用ggplot2创建一个专业外观的图形,但我在很多方面遇到了一些问题。我想为数据点添加颜色,在x轴上添加日期,并创建一条最佳拟合线或类似的线(如果可能)。我一直在Stack Exchange和Google上搜索,试图解决这个问题,但没有结果。我使用的是圣路易斯联邦储备银行(FRED)的“平民劳动力参与率:20年及以上,黑人或非裔美国人” 我使用的是RStudio,我从中导入了数据,然后使用read.csv()函数将其读入RStudio。我最初使用plot()函数来绘制数据,但我想使用g

我曾尝试使用ggplot2创建一个专业外观的图形,但我在很多方面遇到了一些问题。我想为数据点添加颜色,在x轴上添加日期,并创建一条最佳拟合线或类似的线(如果可能)。我一直在Stack Exchange和Google上搜索,试图解决这个问题,但没有结果。我使用的是圣路易斯联邦储备银行(FRED)的“平民劳动力参与率:20年及以上,黑人或非裔美国人”

我使用的是RStudio,我从中导入了数据,然后使用
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()