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

时间:2019-03-25 00:33:17

标签: r

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

我正在使用RStudio,我从LNS11300031导入了数据,然后使用read.csv()函数将其读入RStudio。最初,我使用plot()函数来绘制数据,但是我想使用ggplot()函数来创建外观更好的图形,但是当我创建图形时,数据点看起来非常不透明,模糊并且多云,并且x轴上没有标签。我想添加颜色和最适合的线条,但是我不知道该怎么做。

这是我用来创建没有x轴标签的图形的代码:

ggplot(data = labor, mapping = aes(x = labor$DATE, y = labor$LNS11300031)) + geom_point(alpha = 0.1)

这是我的代码生成的图形:

enter image description here

以下是一些示例数据(labor是我用来存储FRED站点中数据的变量):

head(labor)    DATE        LNS11300031
  1         1972-01-01        77.6
  2         1972-02-01        78.3
  3         1972-03-01        78.7
  4         1972-04-01        78.6
  5         1972-05-01        78.7
  6         1972-06-01        79.4

我想将变量名LNS11300031更改为“劳动力参与率”

有关数据的其他信息:

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轴带有相应的日期。

1 个答案:

答案 0 :(得分:2)

这是涵盖所有3种所需改进的基本尝试:

  • 更清晰的点:不要将alpha设置得太低!一点alpha值对于重叠点很有用,但是alpha = 0.1会使它们太模糊。
  • 颜色:R可以理解简单的颜色名称,例如“红色”,但也可以十六进制颜色代码。选择您想要的任何颜色。
  • 趋势线:易于使用stat_smooth()添加。我使用了method='lm',它给出了一条线性回归直线,但还有其他更灵活的选择。
  • x轴上的日期标签:确保将DATE列正确设置为Date类型,并使用scale_x_date()来调整标签。
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()

输出:

Plot