如何用ggtern修改三元图

How to modify the ternary diagrams with ggtern

如何用ggtern修改三元图

我用下面的代码绘制了三元图,想做一些修改:

  1. 修改x,y,z的刻度标签为概率数(0.2 0.4 0.6 0.8 1.0)
  2. 去掉x,y,z的侧边箭头和相应的文字
  3. 删除第二个图例 (gray/white)
  4. 将第一个图例中的文本替换为“high”和“low”
library(ggtern)
set.seed(1)
plot <- ggtern(data = data.frame(x = runif(100),
                                 y = runif(100),
                                 z = runif(100)),
               aes(x, y, z))

plot + stat_density_tern(geom = 'polygon',
                         n         = 400,
                         aes(fill  = ..level..,
                             alpha = ..level..)) +
  geom_point() +
  theme_rgbg() +
  theme(legend.justification=c(0,1), legend.position=c(0,1)) +
  #theme_gridsontop() + 
  labs(title = "Example Density/Contour Plot")    +
  scale_fill_gradient(low = "blue",high = "red")  +
  # scale_color_gradient(low="yellow",high="red") + 
  guides(fill = guide_colorbar(order=1),color="none")

尝试以下修改:

  1. ggtern 中使用的三个连续刻度中,刻度标签由参数 labels = 控制。左侧边缘为 scale_L_continuous,右侧边缘为 scale_R_continuous,底部边缘为 scale_T_continuous。将中断设置为 c(0, 0.2, 0.4, 0.6, 0.8, 1)(或更简洁地使用 0:5 / 5),并将 labels 设置为相同的值。
  2. 您可以通过在绘图中添加 theme_noarrows() 来删除箭头。
  3. 使用 guides(alpha = guide_none())
  4. 删除 alpha 图例(灰色和白色的)
  5. 您可以通过将 labels 作为参数传递给 scale_fill_gradient 来更改填充图例(蓝色-红色)的标签。由于有 5 个中断 (1:5),我们传递五个标签:c("low", "", "", "", "high")

这是一个完整的代表。如果您在新的 R 会话中精确地剪切并粘贴此代码,您应该得到完全相同的图:

library(ggtern)
set.seed(1)

ggtern(data = data.frame(x = runif(100), y = runif(100), z = runif(100)),
       mapping = aes(x, y, z = z)) +
  stat_density_tern(geom = 'polygon', n = 400,
                    aes(fill  = ..level.., alpha = ..level..)) +
  geom_point() +
  scale_fill_gradient(low = "blue", high = "red", name = "", breaks = 1:5, 
                      labels = c("low", "", "", "", "high"))  +
  scale_L_continuous(breaks = 0:5 / 5, labels = 0:5/ 5) +
  scale_R_continuous(breaks = 0:5 / 5, labels = 0:5/ 5) +
  scale_T_continuous(breaks = 0:5 / 5, labels = 0:5/ 5) +
  labs(title = "Example Density/Contour Plot") +
  guides(fill = guide_colorbar(order = 1), alpha = guide_none()) +
  theme_rgbg() +
  theme_noarrows() +
  theme(legend.justification = c(0, 1), 
        legend.position      = c(0, 1))

reprex package (v0.3.0)

于 2020-11-24 创建