gpt4 book ai didi

r - R 中具有嵌套分类变量和纹理填充的堆积条形图

转载 作者:行者123 更新时间:2023-12-02 03:07:02 27 4
gpt4 key购买 nike

我正在尝试创建一个包含三个分类变量和一个离散变量的堆积条形图,其中一个分类变量“嵌套”在另一个分类变量中。 “嵌套”分类变量将通过颜色可视化,“嵌套”分类变量将通过不同纹理(散列线、点等)可视化。结果如下图所示:/image/vVm9q.jpg

在 R 中执行此操作时,我遇到了 2 个主要挑战:1)将一个分类变量嵌套在另一个分类变量中,2)用纹理来符号化类别。我发现的将一个分类变量“嵌套”在另一个分类变量中的最接近的解决方案是下面的脚本。但是,我希望使用 ggplot 的纹理(而不是轮廓颜色)来区分“性别”类别。我还希望将离散变量放在 x 轴而不是 y 轴上。 This question显示“gridSVG”包可能有用,但我不确定如何将其与 ggplot 合并。

# This  sample dataset is taken from https://stackoverflow.com/questions/31173931/point-plot-with-se-for-3-categorical-1-continuous-variable-in-r:
library(ggplot2)
library(tibble)

df <- tibble(
mea = rep(c("PO_P", "Melaniz"), each = 6),
tre = rep(c("a", "a", "b", "b", "c", "c"), 2),
sex = rep(c("Male", "Female"), 6),
len = c(10.66154, 10.58077, 10.29200, 10.60000, 10.28519, 10.65185,
11.47857, 11.71538, 11.70833, 11.50000, 11.62143, 11.89231)
)

ggplot(df, aes(x = factor(mea), y = len, color = sex, fill = tre)) +
geom_bar(stat = "identity", size = 2)

reprex package 于 2019-09-04 创建(v0.3.0)

最佳答案

您可以使用 ggtextures 包来完成此操作。但是,您需要可以平铺的适当纹理图像。创建此类图像超出了本答案的范围。我在这里使用简单的动物图标。

library(ggplot2)
library(tibble)
library(magick)
#> Linking to ImageMagick 6.9.9.39
#> Enabled features: cairo, fontconfig, freetype, lcms, pango, rsvg, webp
#> Disabled features: fftw, ghostscript, x11
library(ggtextures) # devtools::install_github("clauswilke/ggtextures")

textures = list(
Male = image_read_svg("http://steveharoz.com/research/isotype/icons/horse.svg"),
Female = image_read_svg("http://steveharoz.com/research/isotype/icons/fish.svg")
)

df <- tibble(
mea = rep(c("PO_P", "Melaniz"), each = 6),
tre = rep(c("a", "a", "b", "b", "c", "c"), 2),
sex = rep(c("Male", "Female"), 6),
len = c(10.66154, 10.58077, 10.29200, 10.60000, 10.28519, 10.65185,
11.47857, 11.71538, 11.70833, 11.50000, 11.62143, 11.89231)
)

ggplot(df) +
aes(
x = mea, y = len, image = sex, fill = tre,
group = interaction(sex, tre) # determines which variable should be stacked first, sex or tre
) +
geom_textured_bar(
stat = "identity",
img_width = unit(20, "pt") # adjust for appropriate scaling of textures, or remove
) +
scale_image_manual(values = textures) +
coord_flip() +
theme(legend.position = "bottom")

reprex package 于 2019-09-04 创建(v0.3.0)

关于r - R 中具有嵌套分类变量和纹理填充的堆积条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57716706/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com