影响 ggplot 中堆叠条形图的颜色顺序

问题描述 投票:0回答:1

我有一个自己无法解决的问题。我想使用变量

order
来订购绘图的颜色(见下文),即它们在数据框中列出的方式。不幸的是,
geom_tile()
position = "stack"
的参数与变量
name
不随组变化这一事实相结合,导致 ggplot 的结果以任意顺序出现。

我非常感谢您的帮助!

这是我的数据和代码:

数据:

df <- data.frame(
  name = c("sv0_allmain", "sv0_allmain", "sv0_allmain", "sv0_allmain", "sv0_allmain",
           "sv0_allmain", "sv0_allmain", "sv0_allmain", "sv0_skala_posneg_2",
           "sv0_skala_posneg_2", "sv0_skala_posneg_3", "sv0_skala_posneg_3",
           "sv0_skala_posneg_3", "sv0_skala_posneg_4", "sv0_skala_posneg_4",
           "sv0_skala_posneg_4", "sv0_skala_posneg_4", "sv0_skala_posneg_5",
           "sv0_skala_posneg_5", "sv0_skala_posneg_5", "sv0_skala_posneg_5",
           "sv0_skala_posneg_5", "sv0_skala_posneg_6", "sv0_skala_posneg_6",
           "sv0_skala_posneg_6", "sv0_skala_posneg_6", "sv0_skala_posneg_6",
           "sv0_skala_posneg_6", "sv0_skala_posneg_7", "sv0_skala_posneg_7",
           "sv0_skala_posneg_7", "sv0_skala_posneg_7", "sv0_skala_posneg_7",
           "sv0_skala_posneg_7", "sv0_skala_posneg_7", "sv0_mono_rot",
           "sv0_mono_rot", "sv0_mono_eisblau", "sv0_mono_eisblau",
           "sv0_mono_dunkelblau", "sv0_mono_dunkelblau", "sv0_mono_svgold",
           "sv0_mono_svgold", "sv0_mono_mint", "sv0_mono_mint", "sv1_allmain",
           "sv1_allmain", "sv1_allmain", "sv1_allmain", "sv1_allmain"),
  color = c("#195365", "#6896A8", "#ADA58B", "#91BEA0", "#B5BFC5", "#E73F0C", "#9650EB", "#AFD700", "#91BEA0",
            "#6896A8", "#91BEA0", "#ADA58B", "#6896A8", "#91BEA0", "#A2CEB1", "#79A8BA", "#6896A8", "#91BEA0",
            "#A2CEB1", "#ADA58B", "#79A8BA", "#6896A8", "#91BEA0", "#A2CEB1", "#B3DFC2", "#8AB9CC", "#7AA9BA",
            "#6896A8", "#91BEA0", "#A2CEB1", "#B3DFC2", "#ADA58B", "#8AB9CC", "#7AA9BA", "#6896A8", "#E73f0C",
            "#F9D4C8", "#6896A8", "#DDE7EB", "#195365", "#CBD8DC", "#ADA58B", "#ECEBE5", "#91BEA0", "#E6F0E9",
            "#195365", "#AFD700", "#6896A8", "#91BEA0", "#B5BFC5"),
  total_colors = rep(215, 50),
  y_value = rep(0.004651163, 50),
  order = c("sv0_allmain_1", "sv0_allmain_2", "sv0_allmain_3", "sv0_allmain_4", "sv0_allmain_5",
            "sv0_allmain_6", "sv0_allmain_7", "sv0_allmain_8", "sv0_skala_posneg_2_1",
            "sv0_skala_posneg_2_2", "sv0_skala_posneg_3_1", "sv0_skala_posneg_3_2",
            "sv0_skala_posneg_3_3", "sv0_skala_posneg_4_1", "sv0_skala_posneg_4_2",
            "sv0_skala_posneg_4_3", "sv0_skala_posneg_4_4", "sv0_skala_posneg_5_1",
            "sv0_skala_posneg_5_2", "sv0_skala_posneg_5_3", "sv0_skala_posneg_5_4",
            "sv0_skala_posneg_5_5", "sv0_skala_posneg_6_1", "sv0_skala_posneg_6_2",
            "sv0_skala_posneg_6_3", "sv0_skala_posneg_6_4", "sv0_skala_posneg_6_5",
            "sv0_skala_posneg_6_6", "sv0_skala_posneg_7_1", "sv0_skala_posneg_7_2",
            "sv0_skala_posneg_7_3", "sv0_skala_posneg_7_4", "sv0_skala_posneg_7_5",
            "sv0_skala_posneg_7_6", "sv0_skala_posneg_7_7", "sv0_mono_rot_1", "sv0_mono_rot_2",
            "sv0_mono_eisblau_1", "sv0_mono_eisblau_2", "sv0_mono_dunkelblau_1",
            "sv0_mono_dunkelblau_2", "sv0_mono_svgold_1", "sv0_mono_svgold_2", "sv0_mono_mint_1",
            "sv0_mono_mint_2", "sv1_allmain_1", "sv1_allmain_2", "sv1_allmain_3", "sv1_allmain_4",
            "sv1_allmain_5")
)

剧情:


    ggplot(df, aes(x = fct_rev(fct_inorder(name)), y = y_value)) +
    geom_tile(aes(fill = color), position = "stack") +
    coord_flip() +
    labs(
      title = "In svVis::give_theme_and_color_set() integrierte Farbpalletten und Themes\n",
      x = "",
      y = ""
    ) +
    theme_minimal() +
    scale_fill_identity() +
    give_theme_and_color_set("sv0_allmain")[["theme"]] +
    theme(
      axis.text.x = element_blank()
    )
r ggplot2 geom-tile
1个回答
0
投票

根据

order
aes 上的变量
order
地图
group
堆叠瓷砖:

library(ggplot2)
library(forcats)

ggplot(df, aes(x = 1, y = fct_rev(fct_inorder(name)))) +
  geom_tile(aes(fill = color, group = order), position = "stack") +
  labs(
    title = "In svVis::give_theme_and_color_set() integrierte Farbpalletten und Themes\n",
    x = "",
    y = ""
  ) +
  theme_minimal() +
  scale_fill_identity() +
  #give_theme_and_color_set("sv0_allmain")[["theme"]] +
  theme(
    axis.text.x = element_blank()
  )
#> Warning: Stacking not well defined when not anchored on the axis

© www.soinside.com 2019 - 2024. All rights reserved.