【发布时间】:2021-07-14 00:57:17
【问题描述】:
我想使用 ggplot 生成具有 4 个不同值的图。在下面的示例数据框中,我有 4 个列,我想将它们全部绘制在一个图中。我希望“代码”为 x 轴,“Cor”为 y 轴,“Vari”以不同的颜色显示,“Con”以不同的符号显示。
我知道如何用 4 个列中的 3 个来绘制它,到目前为止,我只制作了 2 个不同的图,一个只有“Vari”,一个只有“Con”。但我想把它们结合起来。我试过了:
library(ggplot2)
library(scales)
library(dplyr)
data %>%
mutate(bin = Cor < 0) %>%
# plot the data using a facet_grid with free y scales
ggplot(aes(x = Code, y = Cor, fill = Con, shape = Vari) +
facet_grid(bin ~ ., scale='free_y') +
theme(legend.position="bottom") +
theme(axis.text.x = element_text(angle=90, vjust=0.6)) +
theme(strip.text.y = element_blank())
但我认为我必须以不同的方式使用这些形状。我也想手动选择颜色和形状,我知道我必须添加
scale_fill_manual(values=c())
颜色,但我纠结于形状。
structure(list(Vari = c("PM", "TMK", "VPM",
"TMK", "TXK", "TNK", "TGK", "VPM", "TMK",
"TXK", "TNK", "TGK", "VPM", "TMK", "VPM",
"TMK", "TNK", "TGK", "VPM", "TMK", "TXK",
"TNK", "TGK", "VPM", "TNK", "TGK", "VPM",
"TMK", "TXK", "TNK", "TGK", "TNK", "TGK",
"TMK", "TXK", "TNK", "TGK"), Code = c("R10",
"J06", "J20-J22", "J20-J22", "J20-J22", "J20-J22", "J20-J22",
"J20-J22", "J20-J22", "J20-J22", "J20-J22", "J20-J22", "J06",
"J06", "J20", "J20", "J20", "J20", "J20-J22", "J20-J22", "J20-J22",
"J20-J22", "J20-J22", "J20", "J20", "J20", "J20-J22", "J20-J22",
"J20-J22", "J20-J22", "J20-J22", "H00-H06", "H00-H06", "B85-B89",
"B85-B89", "I20-I25", "I20-I25"), Corr = c(-0.569, -0.5125,
-0.5739, -0.5843, -0.5603, -0.5744, -0.5547, -0.6168, -0.5897,
-0.5458, -0.5867, -0.5628, -0.5047, -0.5086, -0.5172, -0.512,
-0.5229, -0.5257, -0.6172, -0.6003, -0.5599, -0.602, -0.5912,
-0.5032, -0.5121, -0.5187, -0.5966, -0.59, -0.5661, -0.5879,
-0.5589, 0.5104, 0.5758, 0.5491, 0.528, -0.5153, -0.5516), Con = c("Hi",
"Eg", "Eg", "Eg", "Eg", "Eg", "Eg", "WFX",
"WFX", "WFX", "WFX", "WFX", "WFM",
"WFM", "WFM", "WFM", "WFM", "WFM",
"WFM", "WFM", "WFM", "WFM", "WFM",
"No2", "No2", "No2", "No2", "No2", "No2",
"No2", "No2", "PM25", "PM25", "MAM", "MAM",
"Hi", "Hi")), row.names = c(23L, 35L, 36L, 37L, 38L,
39L, 40L, 43L, 44L, 45L, 46L, 47L, 50L, 51L, 52L, 53L, 54L, 55L,
58L, 59L, 60L, 61L, 62L, 64L, 65L, 66L, 67L, 68L, 69L, 70L, 71L,
74L, 75L, 86L, 87L, 100L, 101L), class = "data.frame")
【问题讨论】:
-
您的代码有多个错误。
ggplot()缺少)并且没有绘制几何图形。例如geom_point()。您还在 3 个地方拼错了Corr。从好的方面来说,您提供了出色的数据样本。如果您发布工作代码并清楚地解释您希望实现的目标,那么提供帮助会容易得多。 -
我们这里有一些缩进和空格干扰了可读性。