betadispers
オブジェクトmod1
をプロットするためにggplot()
を使用して、色をよりよく制御できるようにしようとしています。ggplot geom_pointとgeom_segのための別の色
私はmod1
から重心を抽出して、私は重心をプロットするために、各砂丘つ星の行をプロットするgeom_seg()
、各砂丘の年間反復をプロットするためgeom_point()
を使用して、第二geom_point()
声明ています。 scale_colour_manual(values=cols, guide= FALSE)
を使用してプロットすると、最初のgeom_pointsとgeom_segの色が変更されますが、重心は変更されません。
砂丘地点がcols
で、セグメントの色がcols1
、重心がcols2
であるように、各コンポーネントの色を個別に制御するにはどうすればよいですか? また、各重心の黒い輪郭の色をcols1
に変更したいと思います。
library(vegan)
library(ggplot2)
cols = c("blue","red")
cols1 = c("green","dark orange")
cols2 = c("purple","yellow")
data(dune)
sites = data.frame(year = rep(c(1:5), times= 4), dune = rep(c(1:4),each=5), dune.type = rep(c("A","B"),each=10))
distances <- vegdist(dune, method = "bray")
#create Betadispersion model on betad (effectively a PCoA)
mod1 <- with(sites, betadisper(distances, dune, type = "centroid"))
s = scores(mod1)
# Get points
pnt_sites = as.data.frame(s$sites)
pnt_sites = cbind(pnt_sites, sites)
# Get centroids
pnt_centroids = as.data.frame(s$centroids)
pnt_centroids$dune = rownames(pnt_centroids)
pnt_centroids$dune.type = rep(c("A","B"),each=2)
# Calculate segments
seg = pnt_sites[, c("PCoA1", "PCoA2", "dune")]
tmp = rename(pnt_centroids, c("PCoA1" = "PCoA1_ctr", "PCoA2" = "PCoA2_ctr"))
seg = join(seg, tmp, "dune")
# Plot
ggplot() +
geom_point(
data = pnt_sites,
aes(x = PCoA1, y = PCoA2, colour = dune.type, shape = dune.type),
size = 2
) +
geom_segment(
data = seg,
aes(x = PCoA1, y = PCoA2, xend = PCoA1_ctr, yend = PCoA2_ctr, colour =
dune.type)
) +
geom_point(
data = pnt_centroids,
aes(x = PCoA1, y = PCoA2, fill = dune.type),
size = 3, shape = 21
) +
scale_colour_manual(values=cols, guide= FALSE) +
coord_equal() +
theme_bw()