R - 使用 ggplot2 一次绘制 4 个变量

史波克先生

我想使用 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")
杰博

不太确定问题是什么 - 我觉得从你的问题中你应该知道答案......

我会改用颜色美学,因为没有多少形状可以填充。

scale_(*aes*)_manual每一种美学都有一个我已经添加了这个,尽管 1:6 的值是非常随机的。

df <- 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")

library(tidyverse)

df %>%
  mutate(bin = Corr < 0) %>%
  ggplot(aes(x = Code, y = Corr, color = Con, shape = Vari)) +
  geom_point() +
  colorblindr::scale_color_OkabeIto() +
  scale_shape_manual(values = 1:6) +
  facet_grid(bin ~ ., scale = "free_y") +
  theme(
    legend.position = "bottom",
    axis.text.x = element_text(angle = 90, vjust = 0.6),
    strip.text.y = element_blank()
  )

reprex 包( v2.0.0 )于 2021 年 4 月 19 日创建

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

R ggplot2:使用一个表中的2个变量,但使用上面的行

一次重塑 4 个变量 R

如何使用ggplot2在一个图中绘制多个字符变量?

使用 R 中的 ggplot2 按颜色变量绘制数据

R.使用ggplot2绘制补充类别变量的多重对应分析

通过使用 ggplot2 连接两个点在 R 中绘制多个图

使用 ggplot2 基于 4 个变量的堆积条形图

使用 ggplot2 处理 4 个变量的条形图

分组的条形图,R中的ggplot2,需要一次显示一个观测值

在R中使用ggplot2创建两个变量的有向箭头图

R,ggplot2 qqplot 使用 2 个向量 + 直线?

R: ggplot2 使用 facet_wrap 设置中间的最后一个图

R ggpubr/ggplot2 使用斜体表示一个因子水平

R 将每两个变量合二为一并与 ggplot2 并排绘制

使用 ggplot2 在条形图上绘制两个变量

使用ggplot2(或其他)绘制两个变量

在ggplot2中使用双Y轴在同一图上将两个变量绘制为线

在同一张图上使用ggplot2将两个变量绘制为线

使用 ggplot2 - R 绘制数据框

使用ggplot2在R中绘制高斯混合

如何使用ggplot2在R中绘制菱形?

R:使用ggplot2 / plotly绘制“楼梯”

使用ggplot2在R中绘制几个随机试验

R:使用 ggplot2 绘制多个函数

使用 ggplot2 在 R 中绘制区域

使用ggplot2绘制变量的平均值

使用 3 个变量——date、state_territory 和离散变量制作 R/Shiny/ggplot2 线图

使用ggplot2在一组内彼此相关的两个变量的图

如何使用一个变量连续填充ggplot2条形图