R 我想做一个条形图,在y轴上有两个不同的值,在x轴上有两个不同的值
我一直在寻找一堆答案,但我找不到任何答案来回答我的问题。 我有以下数据集:R 我想做一个条形图,在y轴上有两个不同的值,在x轴上有两个不同的值,r,ggplot2,geom-bar,R,Ggplot2,Geom Bar,我一直在寻找一堆答案,但我找不到任何答案来回答我的问题。 我有以下数据集: structure(list(Quail = c("28", "28", "28", "28", "29", "29", "29", "29", "30", "30", "30", "30", "4", "4", "4", "4", "4", "5", "5", "5", "5", "5", "6", "6", "6", "6", "16", "16", "16", "16", "17", "17", "17",
structure(list(Quail = c("28", "28", "28", "28", "29", "29",
"29", "29", "30", "30", "30", "30", "4", "4", "4", "4", "4",
"5", "5", "5", "5", "5", "6", "6", "6", "6", "16", "16", "16",
"16", "17", "17", "17", "17", "17", "18", "18", "18", "18", "52",
"52", "52", "52", "53", "53", "53", "53", "54", "54", "54", "54"
), day = c(1, 3, 5, 7, 1, 3, 5, 9, 1, 3, 5, 7, 1, 3, 5, 7, 9,
1, 3, 5, 7, 9, 1, 3, 5, 7, 1, 3, 5, 7, 1, 3, 5, 7, 9, 1, 3, 5,
7, 1, 3, 5, 7, 1, 3, 5, 7, 1, 3, 5, 7), Group = c("var", "var",
"var", "var", "var", "var", "var", "var", "var", "var", "var",
"var", "varL", "varL", "varL", "varL", "varL", "varL", "varL",
"varL", "varL", "varL", "varL", "varL", "varL", "varL", "varLQ",
"varLQ", "varLQ", "varLQ", "varLQ", "varLQ", "varLQ", "varLQ",
"varLQ", "varLQ", "varLQ", "varLQ", "varLQ", "varQ", "varQ",
"varQ", "varQ", "varQ", "varQ", "varQ", "varQ", "varQ", "varQ",
"varQ", "varQ"), Equi = c(NA, 5.966699108, 2.179348795, NA, NA,
5.47029668, 4.606832566, 4.123227924, NA, 6.200198499, 3.807239274,
2.121998353, NA, 6.122346998, 3.161297444, 2.618107834, 2.488914738,
NA, 5.80659996, 3.272308721, 3.012209525, 2.750162661, NA, 5.752224579,
4.885757526, 2.515186667, NA, 5.494711674, 4.665176685, 4.017052221,
NA, 6.165528697, 4.969614582, 2.894064483, 2.600701052, NA, 6.368332793,
4.316409804, 6.030505124, NA, 5.173073878, 4.038968216, 2.859379995,
NA, NA, 4.17091987, 2.916909106, NA, 5.926815246, 5.910377652,
NA), Norm.pi = c(5.8, 3.9, 3.1, 2.5, 4.7, 2.5, 5.1, 10.1, 3.4,
2.8, 5.4, 2.6, 4.3, 0.9, 4, 7.3, 4.1, 5.8, 1.8, 4.2, 8.5, 20.4,
4.6, 2.1, 4.3, 11.3, 2.5, 2.9, 4, 4.4, 2.7, 2.2, 2.7, 5.6, 4.5,
2.5, 2, 4.5, 7.1, 5.4, 2.6, 5.1, 8.3, 6.7, 2.8, 3.6, 4.6, 5.8,
3, 3, 6.3)), row.names = c(NA, -51L), groups = structure(list(
Quail = c("16", "16", "16", "16", "17", "17", "17", "17",
"17", "18", "18", "18", "18", "28", "28", "28", "28", "29",
"29", "29", "29", "30", "30", "30", "30", "4", "4", "4",
"4", "4", "5", "5", "5", "5", "5", "52", "52", "52", "52",
"53", "53", "53", "53", "54", "54", "54", "54", "6", "6",
"6", "6"), day = c(1, 3, 5, 7, 1, 3, 5, 7, 9, 1, 3, 5, 7,
1, 3, 5, 7, 1, 3, 5, 9, 1, 3, 5, 7, 1, 3, 5, 7, 9, 1, 3,
5, 7, 9, 1, 3, 5, 7, 1, 3, 5, 7, 1, 3, 5, 7, 1, 3, 5, 7),
Group = c("varLQ", "varLQ", "varLQ", "varLQ", "varLQ", "varLQ",
"varLQ", "varLQ", "varLQ", "varLQ", "varLQ", "varLQ", "varLQ",
"var", "var", "var", "var", "var", "var", "var", "var", "var",
"var", "var", "var", "varL", "varL", "varL", "varL", "varL",
"varL", "varL", "varL", "varL", "varL", "varQ", "varQ", "varQ",
"varQ", "varQ", "varQ", "varQ", "varQ", "varQ", "varQ", "varQ",
"varQ", "varL", "varL", "varL", "varL"), .rows = list(27L,
28L, 29L, 30L, 31L, 32L, 33L, 34L, 35L, 36L, 37L, 38L,
39L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L,
13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 40L,
41L, 42L, 43L, 44L, 45L, 46L, 47L, 48L, 49L, 50L, 51L,
23L, 24L, 25L, 26L)), row.names = c(NA, -51L), class = c("tbl_df",
"tbl", "data.frame"), .drop = TRUE), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"))
我使用ggplot作为:
DI.pi.equi.extended %>%
ggplot() +
geom_bar(aes(x=day, y=Norm.pi), stat = "identity", fill = "red") +
geom_bar(aes(x=day,y=Equi), stat = "identity") +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black"),
axis.text.x = element_text(),
axis.title.y = element_text(face = "bold", size = 22),
legend.direction = "vertical", legend.box = "horizontal") +
scale_x_continuous(breaks = c(1,3, 5, 7, 9), limits = c(0,10)) +
scale_y_continuous(sec.axis = sec_axis(~ . + 10)) +
facet_grid(.~Quail + Group, scales = "free_y")
这将生成以下堆叠图:
我想画的实际上是π。Norm和Equi并排,就像躲闪一样,但我到目前为止还不能让它工作
建议
非常感谢您。诀窍是在打印前使用例如
tidyr::pivot\u longer
将数据集转换为长格式。试试这个:
库(ggplot2)
图书馆(dplyr)
图书馆(tidyr)
DI.pi.equi.extended%>%
tidyr::pivot_更长(c(Equi,Norm.pi),name_to=“name”,values_to=“value”)%>%
ggplot()+
几何图形栏(aes(x=天,y=值,填充=名称),stat=“identity”,position=“dodge”)+
刻度填充手动(数值=c(Norm.pi=“红色”,Equi=“灰色”))+
主题(panel.grid.major=element_blank(),
panel.grid.minor=元素_blank(),
panel.background=元素_blank(),
轴线=元素线(颜色=“黑色”),
axis.text.x=元素\文本(),
axis.title.y=元素\文本(face=“bold”,size=22),
legend.direction=“垂直”,legend.box=“水平”)+
标度x连续(断裂=c(1,3,5,7,9),极限=c(0,10))+
比例y连续(秒轴=秒轴(~.+10))+
分面网格(.~Quail+组,scales=“free_y”)
#>警告:删除了包含缺失值的15行(几何图形栏)。
由(v0.3.0)于2020年5月19日创建。试着做一个简单的例子。非常感谢@stefan!你能给我解释一下这一行吗?->tidyr::pivot_longer(c(Equi,Norm.pi),names_to=“name”,values_to=“value”)。@genferreri只需将pivot_longer将“Equi”和“Norm.pi”列中的值堆叠在一个新的“value”列中。要确定哪个值源于哪个轴,请在df中添加一个新列“name”。在您的例子中,这样做的好处是原始变量变成了一个变量的类别,可以很容易地绘制。有关旋转的更多信息,请参见例如。