如何解决无法将雷达图存储到 R 对象中
我试图将雷达图存储到对象 p1
中,但每次都得到 null
的结果。我尝试了其他 ggplot2 图,它们都可以很好地放入对象中。我的最终目的是使用 patchwork
将一个雷达图和一个线图并排放置。有什么建议吗?
library(fmsb)
set.seed(99)
data <-as.data.frame(matrix( sample( 2:20,10,replace=T),ncol=10))
colnames(data) <- c("math","english","biology","music","R-coding","data-viz","french","physic","statistic","sport" )
# To use the fmsb package,I have to add 2 lines to the dataframe: the max and min of each topic to show on the plot!
data <-rbind(rep(20,10),rep(0,data)
# Custom the radarChart !
par(mar=c(0,0))
p1 <- radarchart( data,axistype=1,#custom polygon
pcol=rgb(0.2,0.5,0.9),pfcol=rgb(0.2,0.5),plwd=4,#custom the grid
cglcol="grey",cglty=1,axislabcol="grey",caxislabels=seq(0,20,5),cglwd=0.8,#custom labels
vlcex=0.6
)
> p1
NULL
解决方法
radarchart 不是 ggplot2 函数,因此使用基本绘图。您不能将基本图写入对象,但可以
如果你想要 ggplot
# Run Once Only
install.packages("devtools")
devtools::install_github("ricardo-bion/ggradar")
# Run rest as usual
library(ggplot2)
library(ggradar)
library(dplyr)
library(scales)
set.seed(99)
mydata <-as.data.frame(matrix( sample( 2:20,10,replace=T),ncol=10))
colnames(mydata) <- c("math","english","biology","music","R-coding","data-viz","french","physic","statistic","sport" )
# To use the fmsb package,I have to add 2 lines to the dataframe: the max and min of each topic to show on the plot!
mydata <-rbind(rep(20,10),rep(0,mydata)
p1 <- ggradar(
mydata[3,],values.radar = c("0","10","20"),grid.min = 0,grid.mid = 10,grid.max = 20
)
p1
您显然需要调整格式
或者,如果你想使用基础 R:
par(mfrow=c(3,1)) 会将每个新图形输出到一个 3 x 1 的网格中……但远不如 ggplot 可控
,将 2 个地块并排放置
这是对您的“最终目标”的回答,而不是对您的问题的回答。
为什么不使用 par(mfrow)?
library(fmsb)
set.seed(99)
data <-as.data.frame(matrix( sample( 2:20,ncol=10))
colnames(data) <- c("math","sport" )
data <-rbind(rep(20,data)
par(mfrow = c(2,1)) # TWO IMAGES SIDE BY SIZE
# YOUR FIRST PLOT
radarchart( data,axistype=1,pcol=rgb(0.2,0.5,0.9),pfcol=rgb(0.2,0.5),plwd=4,cglcol="grey",cglty=1,axislabcol="grey",caxislabels=seq(0,20,5),cglwd=0.8,vlcex=0.6)
# YOUR SECOND PLOT
...... # no need to do anything if it uses base plot (like radarchart)
# if the 2nd plot does not use base plot (i.e.,it's from ggplot),then do a
plot(yourSecondPlot)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。