【问题标题】:Combining multiple functions into one plot (ggplot)将多个函数组合成一个图(ggplot)
【发布时间】:2018-09-27 12:29:58
【问题描述】:

我有一个 (25x6) 矩阵,其中包含以下观察结果(类:数据框):

Mkt.RF   SMB   HML   RMW   CMA    WML
-3.86  1.37  1.14  1.47 -2.35   0.05
 1.10 -0.95 -1.60  1.17 -0.33  -2.96
 2.44 -1.79  0.39  1.14 -2.31  -1.55
 9.10  2.48  0.01 -1.43 -0.12  -7.61
-2.37  2.90 -0.84  0.84 -1.22   1.81
 0.54  0.09  0.48  0.30  0.32   0.03
 0.72 -0.48  0.40  0.20 -0.12   0.87
-6.09  1.57  1.04  1.05  0.43   1.13
 3.43 -1.63 -0.55  1.45 -0.63   3.35
-1.35  0.32 -0.59  1.57 -0.80   3.43
 2.90  0.52  0.00 -0.26  0.39   1.56
 1.35 -0.22 -1.42 -1.58  0.19   2.25
-5.10  0.77 -1.34  1.21 -0.35   1.06
 6.26 -1.91 -2.70  1.89 -1.94   3.01
-2.21  4.04  3.00 -0.07  1.09   0.38
-1.93  2.50  1.88  0.53  1.13   1.26
-5.48  1.04  2.45  0.79  0.61   0.90
-0.11 -1.34  2.59  3.32  2.21   0.10
 4.13  0.15  0.66 -1.51  1.13  -0.18
-3.72  0.76  0.92  0.87  0.42   2.96
-0.64 -2.35 -1.31  0.27  0.55   0.94
 2.52 -2.70 -1.71 -0.16  0.86  -3.55
-1.41 -0.20 -0.96  0.47 -0.25   2.56
-3.08 -0.45 -0.35  0.23 -2.21   1.55
 1.78 -0.19 -1.64 -0.10 -1.17   0.69

我希望生成两个图:(1)概率密度函数,(2)ggplot 中的累积分布函数。我希望每列都有一个函数,因此应该有 6 个 pdf 和 6 个 cdf。我制作了以下内容:

Loaddata <- setwd("~/Desktop")

library(ggplot2)
library(plyr)
library(reshape2)

D <- read.table(file = "MyData.csv", header = TRUE, sep =";", dec = ",")
attach(D)
factors <- cbind(D[,2:7])

ggplot(faktors, aes(Mkt.RF)) + geom_density() + labs(x = "Return", y =     "Distribution", title = "PDF")+
xlim(-20,20) + theme(plot.title = element_text(hjust = 0.5))   

有了这个,我可以生成一个带有单个函数(一列数据)的图,但是我无法将所有六个函数组合到一个图中。这样我就可以复制类似的东西:

PDF functions example

提前谢谢你!

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    你可以试试

    library(tidyverse)
    df %>% 
      bind_rows(df, .id="gr") %>% 
      gather(key, value, -gr) %>% 
      ggplot() + 
       geom_density(data = . %>% filter(gr == 1), aes(value, color = key), size=1.1) +
       stat_ecdf(data = . %>% filter(gr == 2), aes(value, color = key), size=1.1) +
       facet_wrap(~gr, labeller = labeller(gr=c("1" = "PD", "2" = "CD"))) 
    

    可以使用创建单个图

    df %>% 
      gather(key, value) %>% 
      ggplot(aes(value, color=key)) + 
      geom_density() 
    

    【讨论】:

    • 非常感谢!你知道如何改变函数的颜色吗?你知道pdf中x轴上的粉红色水平线是什么吗?
    【解决方案2】:

    这是一个使用 mtcars 的可复制示例,并将所有分布绘制在彼此之上

    library(tidyverse)
    
    mtcars %>%
      gather(Variable, Value) %>%
      ggplot(aes(x=Value, color=Variable)) +
      geom_density(alpha=0)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-31
      • 1970-01-01
      • 1970-01-01
      • 2016-05-30
      • 2018-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多