繁体   English   中英

通过 aes() 使用 ggplot 和 geom_boxplot() 绘制矩阵所有列的箱线图

[英]boxplot of all columns of a matrix with ggplot and geom_boxplot() via aes()

有一个矩阵。 每列都是一个变量。 想要使用ggplotgeom_boxplot一起绘制所有列。 我想正确设置aes() 我只知道如何为 1 列执行此操作,如下例所示。 但是我如何设置aes()将所有列绘制在一起以在同一图中获得 6 个箱线图?

ggplot(Comparativa_Fondos_v1,aes('',SPY)) +geom_boxplot()

这是我的矩阵

> print(Comparativa_Fondos_v1[10:25,8:13])
# A tibble: 16 x 6
       SPY MSCI_Word Russell_3000 `Russell 2000`     IWM     RHS
     <dbl>     <dbl>        <dbl>          <dbl>   <dbl>   <dbl>
 1  0.206     0.253        0.209          0.213  NA      NA     
 2 -0.0915   -0.129       -0.0746        -0.0302 NA      NA     
 3 -0.119    -0.165       -0.115          0.0249  0.0197 NA     
 4 -0.221    -0.195       -0.215         -0.205  -0.205  NA     
 5  0.284     0.338        0.311          0.472   0.469  NA     
 6  0.108     0.152        0.120          0.183   0.182  NA     
 7  0.0479    0.100        0.0612         0.0455  0.0446 NA     
 8  0.157     0.206        0.157          0.184   0.182  NA     
 9  0.0539    0.0957       0.0514        -0.0157 -0.0147  0.0847
10 -0.370    -0.403       -0.373         -0.338  -0.336  -0.218 
11  0.264     0.308        0.283          0.272   0.271   0.265 
12  0.149     0.123        0.169          0.268   0.268   0.180 
13  0.0206   -0.0502       0.0103        -0.0418 -0.0419  0.129 
14  0.158     0.165        0.164          0.164   0.164   0.122 
15  0.322     0.274        0.336          0.388   0.388   0.326 
16  0.135     0.055        0.126          0.0489  0.0494  0.179

尝试这种方法,将数据整形为长形,然后绘制绘图:

library(dplyr)
library(tidyr)
library(ggplot2)
#Code
df %>% pivot_longer(everything()) %>%
  ggplot(aes(x=name,y=value,fill=name))+
  geom_boxplot()

输出:

在此处输入图片说明

使用的一些数据:

#Data
df <- structure(list(SPY = c(0.206, -0.0915, -0.119, -0.221, 0.284, 
0.108, 0.0479, 0.157, 0.0539, -0.37, 0.264, 0.149, 0.0206, 0.158, 
0.322, 0.135), MSCI_Word = c(0.253, -0.129, -0.165, -0.195, 0.338, 
0.152, 0.1, 0.206, 0.0957, -0.403, 0.308, 0.123, -0.0502, 0.165, 
0.274, 0.055), Russell_3000 = c(0.209, -0.0746, -0.115, -0.215, 
0.311, 0.12, 0.0612, 0.157, 0.0514, -0.373, 0.283, 0.169, 0.0103, 
0.164, 0.336, 0.126), Russell_2000 = c(0.213, -0.0302, 0.0249, 
-0.205, 0.472, 0.183, 0.0455, 0.184, -0.0157, -0.338, 0.272, 
0.268, -0.0418, 0.164, 0.388, 0.0489), IWM = c(NA, NA, 0.0197, 
-0.205, 0.469, 0.182, 0.0446, 0.182, -0.0147, -0.336, 0.271, 
0.268, -0.0419, 0.164, 0.388, 0.0494), RHS = c(NA, NA, NA, NA, 
NA, NA, NA, NA, 0.0847, -0.218, 0.265, 0.18, 0.129, 0.122, 0.326, 
0.179)), class = "data.frame", row.names = c(NA, -16L))

base R ,我们可以转换为matrix并使用boxplot

boxplot(as.matrix(df))

-输出

在此处输入图片说明

数据

df <- structure(list(SPY = c(0.206, -0.0915, -0.119, -0.221, 0.284, 
0.108, 0.0479, 0.157, 0.0539, -0.37, 0.264, 0.149, 0.0206, 0.158, 
0.322, 0.135), MSCI_Word = c(0.253, -0.129, -0.165, -0.195, 0.338, 
0.152, 0.1, 0.206, 0.0957, -0.403, 0.308, 0.123, -0.0502, 0.165, 
0.274, 0.055), Russell_3000 = c(0.209, -0.0746, -0.115, -0.215, 
0.311, 0.12, 0.0612, 0.157, 0.0514, -0.373, 0.283, 0.169, 0.0103, 
0.164, 0.336, 0.126), Russell_2000 = c(0.213, -0.0302, 0.0249, 
-0.205, 0.472, 0.183, 0.0455, 0.184, -0.0157, -0.338, 0.272, 
0.268, -0.0418, 0.164, 0.388, 0.0489), IWM = c(NA, NA, 0.0197, 
-0.205, 0.469, 0.182, 0.0446, 0.182, -0.0147, -0.336, 0.271, 
0.268, -0.0419, 0.164, 0.388, 0.0494), RHS = c(NA, NA, NA, NA, 
NA, NA, NA, NA, 0.0847, -0.218, 0.265, 0.18, 0.129, 0.122, 0.326, 
0.179)), class = "data.frame", row.names = c(NA, -16L))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM