如何解决棒棒糖图的刻面包装
我正在建立一个previous question的答案,但是现在我正在努力将其应用于我的问题。我有以下数据:
cluster <- c("Joe","Sam","Bob")
var1 <- c(22.9,0)
var2 <- c(57.8,-25.1)
var3 <- c(45.9,-25.5,63.9)
data <- as.data.frame(
cbind (cluster,var1,var2,var3)
)
我想对棒棒糖图进行多面包装,其中有3个棒棒糖图,如this page所示,其中每个面都是Joe,Sam和Bob。变量名var1,var2和var3在左侧,每个棒棒糖都是一个段,将每个键值对(Joe-var3 = 45.9)的值连接到中间的零。
解决方法
我认为以下代码可以满足您的大部分需求。 您可以调整详细的设置(颜色,背景.....)
library(tibble)
library(tidyr)
library(ggplot2)
data1<-
tibble(
cluster=c("Joe","Sam","Bob"),var1=c(22.9,0),var2=c(57.8,-25.1),var3=c(45.9,-25.5,63.9)
) %>%
pivot_longer(
cols=c("var1","var2","var3"),names_to="varname",values_to="varvalue"
)
ggplot(data1) +
geom_col(aes(y=varname,x=varvalue),fill='seagreen')+
coord_cartesian(xlim=c(-100,100))+
facet_wrap(~ cluster)
,
问题是cbind
会将所有内容转换为字符变量。
cluster <- c("Joe","Bob")
var1 <- c(22.9,0)
var2 <- c(57.8,-25.1)
var3 <- c(45.9,63.9)
data <- as.data.frame(
cbind (cluster,var1,var2,var3)
)
str(data)
#>'data.frame': 3 obs. of 4 variables:
#> $ cluster: chr "Joe" "Sam" "Bob"
#> $ var1 : chr "22.9" "0" "0"
#> $ var2 : chr "57.8" "0" "-25.1"
#> $ var3 : chr "45.9" "-25.5" "63.9"
查看全部转换为chr
。
最好像这样使用cbind.data.frame
library(tidyverse)
data <- cbind.data.frame(cluster,var3)
str(data)
#>'data.frame': 3 obs. of 4 variables:
#> $ cluster: chr "Joe" "Sam" "Bob"
#> $ var1 : num 22.9 0 0
#> $ var2 : num 57.8 0 -25.1
#> $ var3 : num 45.9 -25.5 63.9
现在看到cbind.data.frame
保留了数据类型,即,字符作为字符(chr)和数字作为数字(num)。现在进行绘图,您可以使用
data %>%
pivot_longer(cols = -cluster,values_to = 'mark') %>%
ggplot( aes(x=name,y=mark)) +
geom_bar(stat="identity",fill="#69b3a2",width=0.6) +
coord_flip() +
#theme_ipsum() +
theme(
panel.grid.minor.y = element_blank(),panel.grid.major.y = element_blank()
) +
ylab("mark") +
xlab("") +
facet_wrap(~cluster)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。