首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ggplot2:如何按填充变量的比例对堆叠条形图进行重新排序

ggplot2 是一个用于创建统计图形的强大 R 语言包。要按填充变量的比例对堆叠条形图进行重新排序,你可以使用 reorder() 函数来对数据进行排序,然后使用 ggplot2 来绘制图形。

以下是一个示例代码,展示了如何根据填充变量的比例对堆叠条形图进行重新排序:

代码语言:txt
复制
# 加载必要的包
library(ggplot2)

# 创建示例数据集
data <- data.frame(
  category = rep(c("A", "B", "C"), each = 3),
  subcategory = rep(c("X", "Y", "Z"), times = 3),
  value = c(30, 50, 70, 60, 40, 80, 20, 90, 10)
)

# 计算每个 category 下 subcategory 的总和
totals <- data %>%
  group_by(category) %>%
  summarise(total = sum(value))

# 将总和数据合并回原始数据集
data <- merge(data, totals, by = "category")

# 计算每个 subcategory 在其 category 中的比例
data <- data %>%
  group_by(category) %>%
  mutate(percentage = value / total)

# 按比例对 subcategory 进行排序
data <- data %>%
  group_by(category) %>%
  arrange(desc(percentage)) %>%
  mutate(order = row_number())

# 绘制堆叠条形图
ggplot(data, aes(x = category, y = value, fill = subcategory)) +
  geom_bar(stat = "identity") +
  scale_fill_brewer(palette = "Set1") +
  theme_minimal() +
  labs(title = "Stacked Bar Chart with Proportional Sorting",
       x = "Category",
       y = "Value",
       fill = "Subcategory")

在这个示例中,我们首先创建了一个包含类别(category)、子类别(subcategory)和值(value)的数据集。然后,我们计算了每个类别下子类别的总和,并将其合并回原始数据集。接着,我们计算了每个子类别在其类别中的比例,并按这个比例对子类别进行了排序。最后,我们使用 ggplot2 绘制了堆叠条形图。

如果你遇到问题,比如条形图没有按照预期排序,可能是因为排序逻辑没有正确应用到数据集上。确保你在绘图前已经正确地计算了比例并进行了排序。

参考链接:

  • ggplot2 官方文档: https://ggplot2.tidyverse.org/
  • dplyr 包用于数据处理: https://dplyr.tidyverse.org/

请注意,这个示例假设你已经安装并加载了 ggplot2dplyr 包。如果没有安装,你可以使用 install.packages() 函数来安装它们。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

这些条形图用法您都知道吗?

在R语言ggplot2包中,读者可以借助于geom_bar函数轻松地绘制条形图。对于条形图大家印象是什么呢?又见过哪些种类条形图呢?在本篇文章我将带着各位网友说道说道有关条形图哪些品种。...ggplot2语法讲解 ---- 如果读者R语言比较熟悉,一定听过或使用过ggplot2绘图体系了。...,有两点需要说明,一方面,在ggplot2绘图过程中均采用图层思想,将多个图形进行叠加和设置;另一方面,图层思想是通过代码中加号(+)表现出来。...) + # 删除x轴标题 labs(x = '')# 绘制有序条形图 p2 <- ggplot(data = df, # 要求x轴省份GDP大小降序排序...对于数值型变量有两个,离散型变量有一个数据该如何绘制条形图呢(如常见环比、同比问题),这里提供一个解决思路,那就是使用对比条形图

5.5K10

「R」ggplot2数据可视化

用几何函数指定图类型 ggplot()函数指定要绘制数据源和变量,几何函数则指定这些变量如何在视觉上进行表示。目前,有37个几何函数可供使用。以下列出常用函数。...选项 详述 color 点、线和填充区域边界进行着色 fill 填充区域着色,如条形和密度区域 alpha 颜色透明度,从0(完全透明)到1(不透明) linetype 图案线条(1=实线,...条形图来说,'dodge'将分组条形图并排,'stacked'堆叠分组条形图,'fill'垂直地堆叠分组条形图并规范其高度相等。对于点来说,'jitter'减少点重叠。...分组 在R中,组通常用分类变量水平(因子)来定义。 分组是通过ggplot2图将一个或多个带有诸如颜色、形状、填充、尺寸和线条类型视觉特征分组变量来完成。...指定刻度标记、labels=指定刻度标记标签、limits=控制要展示范围 scale_x_discrete()和scale_y_discrete() breaks=因子水平进行放置和排序,labels

7.3K10
  • 课后笔记:ggplot2优雅显示WB结果

    ✦ 数据(Data),最基础是可视化数据和一系列图形映射(aesthetic mappings),该映射描述了数据中变量如何映射到可见图形属性。...identity表示条形高度是变量值;对于连续性变量使用bin,转换结果使用变量density来表示。...「position:」 位置调整,有效值是stack、dodge和fill,默认值是stack(堆叠),是指两个条形图堆叠摆放,dodge是指两个条形图并行摆放,fill是指按照比例堆叠条形图,每个条形图高度都相等...「width:」 条形图宽度,是个比值,默认值是0.9 「color:」 条形图线条颜色 「fill:」 条形图填充色 基本演示 读取ImagJ数据及转换 #读取ImageJ dat=read.csv...image.png 数据调整及误差线增加 在ggplot2中可以直接结合stat_summary函数快速进行数据统计->链接 所以stat可以设置为summary,将柱状图高度设置为各组均值并联合stat_summary

    2.5K20

    如何通过R语言制作BBC风格精美图片

    + geom_hline(yintercept = 0, size = 1, colour = "#333333") 构图 如果想将可视化数据某个变量进行拆分,则需要使用facet_wrap或facet_grid...大小重新排序栏 默认情况下,R将字母顺序显示数据,但大小排列则很简单:只需将reorder()包装在要重新排列x或y变量周围,然后指定要变量 重新排序。 例如。...x =重新排序(国家/地区,流行)。...升序是默认设置,但是您可以通过将desc()包裹在要排序变量周围来将其更改为降序: bars <- ggplot(bar_df, aes(x = reorder(country, lifeExp),...image.png 修改柱状图柱子顺序 有时,您需要以不字母顺序或大小重新排序方式对数据进行排序

    13.1K10

    ggplot2--R语言宏基因组学统计分析(第四章)笔记

    每个geom只能显示特定几何图形(例如,条形图、线和点等),每个geom都有默认统计,并且每个统计都有默认geom 位置调整:用于调整图形上几何元素位置以避免相互遮挡,例如在条形图中,堆叠或回避(...对象p是类ggPlotR S3象,由数据和其他包含关于该图信息组件组成。我们可以使用Summary()函数访问信息详细信息,以跟踪确切使用了哪些数据以及变量如何映射。...尺度函数既可用于连续变量,也可用于分类变量。例如,在连续情况下,用刻度填充直方图或密度图;在离散情况下,比例用于填充直方图或条形图,或者在映射颜色、大小或形状时用于散点图。...~y+z))两个变量执行刻面,两个变量列显示,绘图将基于一个变量与另一个变量级别并排显示。这种可视化使得两个分类变量比较非常有效。...此功能使包装分面特别适用于多个级别的类别变量分面组合进行分面。要执行WRAP刻面,我们使用facet_wrap(FORMULA)函数。

    5K20

    用ggpubr包制图

    简介 Hadley Wickham撰写ggplot2[1]是好用软件包,是可视化工具必备包。但是,需要知道ggplot2一定理论与原理,新手来说,入门门槛还是比较高。...剂量("dose")进行颜色填充;添加抖动点并按剂量("dose")更改形状。...小提琴图 下图是小提琴图(ggviolin)与箱型图结合(add = "boxplot"),剂量("dose")进行颜色填充;增加白色填充(add.params = list(fill = "white...有序条形图 条形图(ggbarplot)中可以利用sort.val = "desc"把数据从大到小排序并且不在组内进行排序(sort.by.groups = FALSE),而是所有数据排序;旋转x轴标签...根据上面的数据,创建一个有序箱型图,升序排序(sort.val = "asc")。

    1.5K30

    (数据科学学习手札38)ggplot2基本图形简述

    一、简介   上一篇中我们介绍了ggplot2基本语法规则,为了生成各种复杂叠加图层,需要了解ggplot2中一些基本几何图形构造规则,本文便就常见基础几何图形进行说明; 二、各基础图形 2.1...,多用于表现某些水平或比例类指标随时间变化情况,下面是一个朴素例子,以huron湖水水平变化数据为例: library(ggplot2) p <- ggplot(huron,aes(x=year,...,stat = 'identity')+ labs(title='消费水平')+ theme(plot.title=element_text(hjust=0.5)) p   可以看出这时我们堆叠条形图便而可以看作离散堆积面积图...; 2.4 bin2d()   二维热图也是一种非常实用图像,我们可以用来一览数据某两个变量指标分布情况: library(ggplot2) d <- ggplot(diamonds, aes...= rownames(mtcars))) p + geom_text() 出现标签遮挡情况进行抹除(不建议使用): p + geom_text(check_overlap = TRUE)

    5.2K20

    缺失值处理,你真的会了吗?

    缺失值处理是一个数据分析工作者永远避不开的话题,如何认识与理解缺失值,运用合适方式处理缺失值,模型结果有很大影响。...缺失值可视化 matplotlib库--条形图 利用常规matplotlib.pyplot库可视化出每个变量缺失值比例,以及总体排名情况,一目了然。...optional, default: 0条形基y坐标, 用于绘制堆叠条形图。...log : bool, optional, default: False 是否对坐标轴进行log变换。 **kwargs 关键字参数,用于条形图进行其他设置,如透明度等。...迭代(循环)次数可能的话超过40,选择所有的变量甚至额外辅助变量。 C. KNN填充 利用KNN算法填充,将目标列当做目标标签,利用非缺失数据进行KNN算法拟合,最后目标标签缺失值进行预测。

    1.5K30

    文献配套GitHub发表级别绘图03-条形图

    下面来实现Fig.2a条形图(barplots) 一、数据载入 rm(list = ls()) library(reshape2) library(ggplot2) library(RColorBrewer...cast 函数作用除了还原数据外,还可以对数据进行整合。 dcast 输出数据框。公式左边每个变量都会作为结果中一列,而右边变量被当成因子类型,每个水平都会在结果中产生一列。...二、条形图(相对比例) # 8个样品组 22种免疫细胞比例 p <- ggplot(melt.data ,aes(x = Status, # 设置x轴...+ #stat="count"表示条形高度是y变量数量 #stat="identity"表示条形高度是y变量值 scale_fill_manual(values = colorRampPalette...(相对比例) 其实就是输入数据不同 data <- read.table('..

    1.5K20

    R语言绘图之ggplot2

    变量组图(facet_等) 真正绘图命令(stat_,geom_,annotate),这三类就是实现一个函数一个图层核心函数。...aes : 同样适用于修改geom_XXX() aes参数控制了哪些变量进行图形映射,以及映射方式 图形属性(aes)横纵坐标、点大小、颜色,填充色等 几何对象函数 描述 geom_abline 线图...,由斜率和截距指定 geom_area 面积图(即连续条形图) geom_bar 条形图 geom_bin2d 二维封箱热图 geom_blank 空几何对象,什么也不画 geom_boxplot...定位函数 描述 position_dodge 并列 position_fill 填充 position_identity 不对位置进行处理 position_jitter 扰动处理 position_stack...堆叠处理 4. ggplot2应用语法 ggplot(data =, aes(x = , y = )) + geom_XXX(...)+ ... + stat_XXX(...) + ... + annotate

    4.2K10

    【数据分析 R语言实战】学习笔记 第四章 数据图形描述 (下)

    使用qplot()变量carat画出更美观直方图: > qplot(carat,data=diamonds,geom="histogram",binwidth=.1,xlim=c(0,3),fill...:position用于这一层图形位置调整,常用于条形图(bar)和直方图,取值为“identity”时表示直接显示," dodge”为分类变量并列放置," stack”为堆叠放置,"fill”显示相对比例...进行数据映射时,函数aes()可用于设置图形样式,通过参数color,shape和size分别设置点颜色、形状和大小哪些向量分类,通过这些参数,即使一个简单散点图也可以传递大量信息。...轴作log10变换;第四图层添加平滑统计变换 (5)分面 当我们想要观察某一分类变量对数据影响情况时,仅通过shape, color区分是不够,需要根据变量不同取值进行分组、分别绘图。...这时就要用到facet数,它控制数据分组方法和排列形式,进行条件绘图。 常用函数是facet_wrap(~x, ncol),其中x表示分组变量,ncol表示图形排列方式,即分成几列。

    1.9K20

    24式R入门作图必学之barplot条形图(一)

    一、前言二、初阶图形2.1 基本条形图2.2 水平柱状图2.3 带图例堆叠柱状图2.4 带图例分组柱状图2.5 ggplot作图2.6 plotly作图三、进阶图形3.1 水平柱状图3.2 显著性柱状图...3.3 堆积百分比柱状图3.4 分组柱状图四、讨论一、前言柱状图又称条形图,在统计分析中使用频率最高,也是众多小白入门R最早绘制可视化图形。...") #可自行更换颜色图片2.2 水平柱状图barplot(values,horiz = TRUE) #翻转图片2.3 带图例堆叠柱状图#构建数据data <- as.matrix(data.frame...) #读取文件rt = read.table(inputFile, header=T, sep="\t", check.names=F) #FDR排序labels=rt[order(rt$FDR,decreasing...right", #图例位置 sort.val = "asc", #倒序,顺序改为desc sort.by.groups=TRUE)+ #排序

    3K10

    (数据科学学习手札37)ggplot2基本绘图语法介绍

    : qplot(carat, data=data, geom='density', colour=color) 传入fill来控制每个曲线下填充颜色:  2.2.6 条形图...,下面我们就ggplot2语法规则进行探索: 3.1 ggplot2绘图过程   我们先来看一下ggplot2绘图过程: 仅根据上面的图,你心中一定很是疑惑,没关系,请你先短暂浏览上面这个过程...,当传入属性值非正常输入时,譬如colour中输入是data中某列类别型变量时,整个绘图过程不会有异常,因为ggplot2内部非常“宽容”地类别型变量进行了标度转换,如下例: qplot(displ...,并多次使用过,它控制生成图像类型; 3.2.5 位置调整   位置调整指的是该层中元素位置进行微调,ggplot2中所有可用位置调整参数如下: 名称 描述 dodge 禁止重叠,并排放置 fill...堆叠元素并将高度放缩为1 identity 不做任何调整(就像神经网络里identity激活函数一样) jitter 给点添加扰动避免重合 stack 将图形元素堆叠起来   而上述这些位置参数通常是应用在条形图

    6.9K50

    数据可视化基本套路总结

    值得一提是,柱状图一般需要排序:如果分类型变量是有序,按照它本身顺序排列即可;如果分类型变量无序,那么则根据数值型变量大小进行排序,使柱状图高度单调变化。...(排序宗旨是直观表达出想展示规律) 条形图 ? 条形图 只不过把柱状图坐标旋转一下,竖着变成横着,这个可根据版面自由选择。上图示例就是串列堆叠条形图。 南丁格尔玫瑰图 ?...它一般是把多个类别随时间变化数据堆叠起来,表征随时间变化趋势。 词云图 ? 词云图 词云图即是对词汇频数进行可视化,一个词越大它出现次数就越多,一般与文本挖掘配合使用。...想想看,如果要把一个月每天数据都做一张图,难道要做30张图?以交互方式,让用户自己选择哪一天,然后进行数据筛选、计算、重新画图,1张图就够了。 展现源数据。...作图感兴趣朋友可进入腾讯课堂:http://bioinfo.ke.qq.com,里面有关于如何用Adobe Illustrator图形进行编辑、拼合、排版、简单模式图绘制视频,可免费观看。

    2.6K20

    day4 呦呦鹿鸣——R for data science阅读笔记之ggplot()

    使用 ggplot2 可视化单个变量分布&两个或多个变量之间关系。...(variable)——可以度量数量、质量或属性行:观测值(data point observation )——在相似条件下进行一组测量值,包含不同变量多个值表格数据:一组与相应变量和观测值相关联变量...)) + geom_bar()#根据条形频率依据处理因子函数条形重新排序 ggplot(penguins, aes(x = fct_infreq(species))) + geom_bar...fct_infreq() :每个级别的观测值数(最大在前)fct_inseq():级别的数值。数值变量数值变量可以是连续,也可以是离散。...)平滑曲线geom_smooth()三个或更多变量用不同颜色和形状代表不同观测值将绘图拆分为不同子图 单个变量绘图进行分面facet_wrap() 参数1:公式?

    23910

    那么多数据可视化图表,你选对了吗?

    两个优秀数据可视化案例 ---- A. 年龄段分布美国人口百分比: ? 这个 GIF 动画,显示了随着时间推移的人口统计数量变化。这是如何以令人信服方式呈现一种单一数据好榜样。 B....例如:占据公司全部资金一半两个渠道;某公司员工男女比例等。...如何选用图标 ---- 在讲完了每种图表优势和缺点,使用禁忌外,接下来就要为大家介绍: ① 应用场景选择 虽然图表种类繁多,但是基于使用场景大致可以分为以下几种情况。 ?...② 数据关系选择 根据可视化专家 Andrew Abela 该数据关系分类方式提炼,他提出将图表展示数据关系分为四类:比较、分布、构成和联系。...所以在表示分类时,如项目数量较少,使用柱形图或条形图均可,如项目_数量较多_,则建议使用_条形图_。 Q: 柱形图和折线图都可以表示时间序列趋势,如何选择?

    1.2K30

    R语言 | 条形图绘制

    本次内容介绍条形图绘制,包括基本条形图、簇状条形图、频数条形图、堆积条形图、百分比条形图。 下次将介绍如何条形图着色、调整条形图宽度和间距、添加数据标签等内容。...有时候,我们想额外添加一个分类变量跟x轴上分类变量一起对数据进行分组。 此时,可通过将该分类变量映射给fill参数来绘制簇状条形图,这里fill参数用来指定条形填充色。...ggplot(cabbage_exp,aes(x = Date,y = Weight,fill = Cultivar)) + geom_col() 输出图片 反转图例顺序 我们可以通过guides()函数图例顺序进行调整...演示数据 以ggplot2包中diamonds数据集为例。...y参数,geom_bar()函数在默认情况下将参数设定为stat = "bin",该操作会自动计算每组(根据x轴上面的变量进行分组)变量对应观测值。

    2.2K20

    那么多种数据可视化图表,你选对了吗?

    01 两个优秀数据可视化案例 1. 年龄段分布美国人口百分比 ? 这个 GIF 动画,显示了随着时间推移的人口统计数量变化。这是如何以令人信服方式呈现一种单一数据好榜样。 2....例如:占据公司全部资金一半两个渠道;某公司员工男女比例等。...雷达图适用于多维数据(四维以上),且每个维度必须可以排序。数据点一般6个左右,太多的话辨别起来有困难。 03 如何选用图标 在讲完了每种图表优势和缺点,使用禁忌外,接下来就要为大家介绍: 1....数据关系选择 根据可视化专家 Andrew Abela 该数据关系分类方式提炼,他提出将图表展示数据关系分为四类:比较、分布、构成和联系。...所以在表示分类时,如项目数量较少,使用柱形图或条形图均可,如项目数量较多,则建议使用条形图。 Q: 柱形图和折线图都可以表示时间序列趋势,如何选择? A: 一般来说,建议使用折线图反映趋势变化。

    1.8K20
    领券