[英]boxplot of all columns of a matrix with ggplot and geom_boxplot() via aes()
有一个矩阵。 每列都是一个变量。 想要使用ggplot
、 geom_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.