r - 如何制作梯形图?
问题描述
请问您如何在R中制作梯形图。这是一个数据示例:
d <- data.frame("Subject" = 1:10,
"Group" = c(rep(1, 6), rep(2, 4)),
"Gender" = c(rep("male" ,2), rep("female", 6), rep("male", 2)),
"Y1" = rnorm(10, 100, 30),
"Y2" = rnorm(10, 3000, 1000))
在这个梯形图中:
- 需要显示那些高 Y1 也有高 Y2
- 显示“组”和“性别”因素的相关性
- 在 Y1 的左侧和 Y2 的右侧显示 Y 轴刻度
- 对于每个受试者,两个变量(Y1 和 Y2)用实线表示第 1 组,虚线表示第 2 组,红色表示男性,蓝色表示女性。
关于包 plotrix 有一些东西,但我似乎无法找到详细信息。
解决方案
感谢威比斯利的意见!这很有帮助。但是,我使用以下代码来生成我的结果。
# Melt dataset for plot:
library(reshape)
melted_data<-melt(d, id.vars=c("Subject","Group","Sex"),measure.vars= c("Y1","Y2"))
melted_data$Group<-as.factor(melted_data$Group)
# calcuate R2 per Group and Sex combination
require(plyr)
func <- function(xx)
{ return(data.frame(R2 = round (cor(xx$Y1, xx$Y2),6)))}
CorrDataset<-ddply(d, .(Group,Sex), func)
# plot:
library(gridExtra)
library(ggplot2)
set.seed(1)
p <-ggplot(melted_data, aes(x=variable, y=value, group=Subject, linetype=Group, color=Sex)) +
geom_line(size=1)
#p <- p + scale_y_continuous(sec.axis = sec_axis(~ scale(.), name = "Y2"))
p+theme(legend.position="top",
axis.line.x = element_line(color="black", size = 2),
axis.line.y = element_line(color="black", size = 2),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.background = element_blank())+
annotation_custom(tableGrob(CorrDataset,rows = rownames(CorrDataset)), ymin=4000, ymax=4000)
请注意:对于第二个 Y 轴,它在上面的代码中被注释掉了。
推荐阅读
- google-sheets - 多列数据提取
- apache-poi - 从 XSSFWorkbook 中删除 XSSFTable
- python - 我的条件有什么问题?使用 np.where 语句标记我的 pandas 数据帧
- c++ - 为什么 Oracle 无法解析服务名称?
- laravel - Laravel 5.6 将对象转换为数组失败
- image - 如何为赤道偏差加权生成具有有效 y 的高斯图?
- hadoop - 用于辅助的用户定义 HBase 协处理器实现
- javascript - 在 Typescript 上声明类型时,前导管道的建议是什么
- javascript - 更改 FormArray 的表单控制顺序时的复制验证
- node.js - 如何使用自适应卡在 microsoft bot framework v4 中处理按钮输入