- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试以堆叠条形图格式绘制包含超过 2000 个样本的数据集,其中每个样本(由“SampleID”表示)位于 x 轴上,y 轴上有 6 个测量值(测量1-6
)。我希望按以下测量变量顺序显示/排序样本:Measurement4、1、5、2、3 和 6,以及从最高到最低测量值。下面是 15 个样本的子集,作为我正在使用的示例,我将其称为“dummy_set”数据框:
SampleID Measurement1 Measurement2 Measurement3 Measurement4 Measurement5 Measurement6
1 A 0.05 0.00 0.95 0.00 0.0 0.00
2 B 0.00 0.00 0.43 0.56 0.0 0.01
3 C 0.64 0.36 0.00 0.00 0.0 0.00
4 D 0.00 0.82 0.18 0.00 0.0 0.00
5 E 0.00 0.60 0.00 0.40 0.0 0.00
6 F 0.80 0.00 0.00 0.20 0.0 0.00
7 G 0.00 0.00 0.00 1.00 0.0 0.00
8 H 0.00 0.00 0.00 1.00 0.0 0.00
9 I 0.00 0.00 1.00 0.00 0.0 0.00
10 J 0.00 0.00 1.00 0.00 0.0 0.00
11 K 0.25 0.00 0.00 0.45 0.3 0.00
12 L 0.10 0.00 0.00 0.10 0.8 0.00
13 M 0.19 0.10 0.00 0.70 0.0 0.01
14 N 0.90 0.00 0.00 0.10 0.0 0.00
15 O 0.00 0.10 0.40 0.00 0.5 0.00
这是我所做的基础知识:
融合数据集:Melt_dummy_set <- Melt(dummy_set, id.var = "SampleID")
融化的数据集如下所示:
head(melt_dummy_set)
SampleID variable value
1 A Measurement1 0.05
2 B Measurement1 0.00
3 C Measurement1 0.64
4 D Measurement1 0.00
5 E Measurement1 0.00
6 F Measurement1 0.80
使用 ggplot() 和 geom_bar() 绘制融化的数据集:
ggplot(melt_dummy_set, aes(x = SampleID, y = value, fill = variable)) +
geom_bar(stat = "identity") +
如您所见,样本按其列出的原始顺序 (A-O) 绘制。但是,我希望它们按以下顺序绘制:G、H、M、B、K、N、F、C、L、O、D、E、I、J 和 A。
根据其他类似的 Stack Overflow 问题,我发现我需要按照我想要的顺序重新调整/重新建立因素。这是我到目前为止所尝试过的:
#Attempt 1
reordered_melt_dummy_set <- transform(melt_dummy_set, variable = reorder(variable, -value))
ggplot(reordered_melt_dummy_set, aes(x = SampleID, y = value, fill = variable)) +
geom_bar(stat = "identity") +
#Attempt 2
copy_melt_dummy_set <- melt_dummy_set
copy_melt_dummy_set$variable <- factor(copy_melt_dummy_set$variable, levels = c("Measurement4", "Measurement5", "Measurement1", "Measurement2", "Measurement3", "Measurement6"))
ggplot(copy_melt_dummy_set, aes(x = SampleID, y = value, fill = variable)) +
geom_bar(stat = "identity") +
我的第三次尝试导致了多个错误(在代码行后面以“##”表示)
#Attempt 3
copy2_melt_dummy_set <- melt_dummy_set
copy2_melt_dummy_set$SampleID <- factor(copy2_melt_dummy_set$SampleID, levels = copy2_melt_dummy_set[order(-copy2_melt_dummy_set$value), "variable"])
##Error in `levels<-`(`*tmp*`, value = as.character(levels)) : factor level [2] is duplicated
copy2_melt_dummy_set$variable <- factor(copy2_melt_dummy_set$variable, levels = copy2_melt_dummy_set[order(copy2_melt_dummy_set$value), "variable"])
## Error in `levels<-`(`*tmp*`, value = as.character(levels)) : factor level [2] is duplicated
copy2_melt_dummy_set$SampleID <- factor(copy2_melt_dummy_set$SampleID, levels = copy2_melt_dummy_set[order(-copy2_melt_dummy_set$variable), "SampleID"])
## Error in `levels<-`(`*tmp*`, value = as.character(levels)) : factor level [16] is duplicated
## In addition: Warning message: In Ops.factor(copy2_melt_dummy_set$variable) : ‘-’ not meaningful for factors
copy2_melt_dummy_set$SampleID <- factor(copy2_melt_dummy_set$SampleID, levels = copy2_melt_dummy_set[order(-copy2_melt_dummy_set$value), "SampleID"])
## Error in `levels<-`(`*tmp*`, value = as.character(levels)) : factor level [16] is duplicated
copy2_melt_dummy_set$SampleID <- factor(copy2_melt_dummy_set$SampleID, levels = copy2_melt_dummy_set[order(-copy2_melt_dummy_set$value), "value"])
## Error in `levels<-`(`*tmp*`, value = as.character(levels)) : factor level [2] is duplicated
#Attempt 4
copy3_melt_dummy_set <- melt_dummy_set[order(melt_dummy_set$variable, -melt_dummy_set$value), ]
head(copy3_melt_dummy_set)
ggplot(copy3_melt_dummy_set, aes(x = SampleID, y = value, fill = variable)) +
geom_bar(stat = "identity") +
#Attempt 5
ggplot(melt_dummy_set[order(melt_dummy_set$variable, -melt_dummy_set$value), ], aes(x = SampleID, y = value, fill = variable)) +
geom_bar(stat = "identity") +
#Attempt 6
new_melt_dummy_set <- within(melt_dummy_set,
variable <- factor(variable, levels = names(sort(table(variable), decreasing = TRUE))))
ggplot(new_melt_dummy_set, aes(x = SampleID, y = value, fill = variable)) +
geom_bar(stat = "identity") +
#Attempt 7
copy4_melt_dummy_set <- melt_dummy_set
custom_leveling <- unique(copy4_melt_dummy_set$variable)
copy4_melt_dummy_set$variable <- factor(copy4_melt_dummy_set$variable, level = custom_leveling)
ggplot(copy4_melt_dummy_set, aes(x = SampleID, y = value, fill = variable)) +
geom_bar(stat = "identity") +
在所有情况下,我都无法重新组织 x 轴上的实际样本。我觉得可能有一个简单的解决办法,但我不知道我做错了什么。有什么建议吗?
为了回应可能的重复评论,我尝试应用 Order Bars in ggplot2 bar graph 中的代码/解决方案他们没有按照我想要的顺序制作情节。请参阅下面的我尝试过的代码:
#First solution
new_melt_dummy_set <- within(melt_dummy_set,
variable <- factor(variable, levels = names(sort(table(variable), decreasing = TRUE))))
ggplot(new_melt_dummy_set, aes(x = SampleID, y = value, fill = variable)) +
geom_bar(stat = "identity")
#Second solution
ggplot(melt_dummy_set, aes(x = reorder(SampleID, variable, function(x)-length(x)), y = value, fill = variable)) + geom_bar(stat = "identity")
ggplot(melt_dummy_set, aes(x = reorder(variable, SampleID, function(x)-length(x)), y = value, fill = variable)) + geom_bar(stat = "identity")
#Third solution
ordered_measurements <- c("Measurement4", "Measurement1", "Measurement5", "Measurement2", "Measurement3", "Measurement6")
ggplot(melt_dummy_set, aes(x = SampleID, y = value, fill = variable)) +
geom_bar(stat = "identity") +
scale_x_discrete(limits = ordered_measurements)
#Fourth solution
ggplot(melt_dummy_set, aes(x = reorder(SampleID, -table(variable)[variable]), y = value, fill = variable)) + geom_bar(stat = "identity")
require(forcats)
ggplot(melt_dummy_set, aes(x = SampleID, fill = fct_infreq(variable), y = value)) + geom_bar(stat = "identity")
ggplot(melt_dummy_set, aes(x = fct_infreq(variable))) + geom_bar(stat = "identity")
#Fifth solution
library(tidyverse)
library(forcats)
melt_dummy_set %>%
mutate(variable = fct_reorder(variable, value, .desc = TRUE)) %>%
ggplot(aes(x = SampleID, y = value, fill = variable)) + geom_bar(stat = 'identity')
#Sixth solution
library(dplyr)
melt_dummy_set %>%
group_by(variable) %>%
summarize(counts = n()) %>%
arrange(-counts) %>%
mutate(SampleID = factor(SampleID, variable)) %>%
ggplot(aes(x = SampleID, y = value, fill = variable)) +
geom_bar(stat = "identity")
melt_dummy_set %>%
group_by(SampleID) %>%
summarize(counts = n()) %>%
arrange(-counts) %>%
mutate(SampleID = factor(SampleID, value)) %>%
ggplot(aes(x = SampleID, y = value, fill = variable)) +
geom_bar(stat = "identity")
#Seventh solution
new_meltedDummy_set <- transform(melt_dummy_set,
variable = ordered(variable, levels = names(sort(-table(variable)))))
ggplot(new_meltedDummy_set, aes(x = SampleID, y = value, fill = variable)) +
geom_bar(stat = "identity")
最佳答案
这就是你的目的吗?我想你很接近。您不需要将 Measurement
变量列转换为因子,而是需要根据 Measurement
值的顺序对 SampleID
列进行排序。这是计算 sample_order
的行中发生的情况:
library(tidyverse)
dummy_set <- tibble(
SampleID = c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O"),
Measurement1 = c(0.05, 0, 0.64, 0, 0, 0.8, 0, 0, 0, 0, 0.25, 0.1, 0.19, 0.9, 0),
Measurement2 = c(0, 0, 0.36, 0.82, 0.6, 0, 0, 0, 0, 0, 0, 0, 0.1, 0, 0.1),
Measurement3 = c(0.95, 0.43, 0, 0.18, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0.4),
Measurement4 = c(0, 0.56, 0, 0, 0.4, 0.2, 1, 1, 0, 0, 0.45, 0.1, 0.7, 0.1, 0),
Measurement5 = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.3, 0.8, 0, 0, 0.5),
Measurement6 = c(0, 0.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0)
)
sample_order <- dummy_set %>%
arrange(desc(Measurement4), desc(Measurement1), desc(Measurement5), desc(Measurement2), desc(Measurement3), desc(Measurement6)) %>%
pull(SampleID)
melt_dummy_set <- dummy_set %>%
gather(variable, value, -SampleID)
reordered_melt_dummy_set <- melt_dummy_set %>%
mutate(SampleID = factor(SampleID, levels = sample_order))
plot_ordered <- ggplot(reordered_melt_dummy_set, aes(x = SampleID, y = value, fill = variable)) +
geom_bar(stat = "identity") +
scale_y_continuous(expand = c(0,0)) +
theme(axis.ticks.x = element_blank(), panel.grid = element_blank(), axis.line = element_line(color = "black"), panel.border = element_blank(), panel.background = element_blank())
plot_ordered
由reprex package于2019年7月26日创建(v0.3.0)
关于r - 堆积条形图 ggplot2-按特定变量从最高值到最低值对样本进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57224334/
我正在处理不平衡的面板数据,我想从中抽取一个随机样本,该样本不受每个单位不同观察次数的影响。例如,在下面的代码中,IBM 被选中的可能性是 GOOG 的两倍,被选中的可能性是 MSFT 的五倍。有没有
有人可以指出实现 CollectionChanged 的示例。我正在使用 wpf mvvm 灯。我试图谷歌,没有找到任何足够好的东西。 最佳答案 public ObservableCollecti
我有 df我想对某些变量的分布进行一些抽样。比方说 df['type'].value_counts(normalize=True)返回: 0.3 A 0.5 B 0.2 C 我想做类似 sampled
我仍然无法理解样本/像素/片段之间有什么区别。 由于片段着色器按像素执行,我认为片段只是指一个像素,这是正确的吗?谁能给我一个例子和每个人的定义? 最佳答案 片段着色器按片段执行并发出像素。它们非常相
我正在尝试理解这个名为“The Amazing Audio Engine”的 GitHub 项目,它简化了在 iOS 上处理音频的过程。 我从麦克风捕捉并使用这种方法: id receiver = [
如何在诺基亚 Qt SDK(用于手机)中使用 QTableView。我引用了一些文档,但我仍然不清楚 QTableView。请任何人建议如何使用 QTableView。 我想显示具有三列的 QTabl
我已经能够获取 JmDNS 附带的示例来编译和运行,但是我无法获取任何类来发现我的服务。 我正在运行一个 Windows 环境,多台 PC 运行 VNC、SSH 和 Apache,我一直在尝试让 Jm
问题的具体实例 我的整数范围是 1-100。我想生成此范围内的 n 个总数,这些数字尽可能均匀分布并包括第一个和最后一个值。 示例 start = 1, end = 100, n = 5 Outp
我在线程组中有几个带有脚本的 JSR 223 采样器,它们在执行在调用 HTTP 请求之前进行一些工作。 问题在于 JSR 233 采样器包含在最终摘要报告中 我的问题是如何从最终计算中排除那些 JS
我需要有关存储后端歌曲预览的好方法的建议(现在正在查看iTunes,也许还有spotify和soundcloud)。我的想法是,我需要预下载并可能缓存30秒及更少的音频文件,以方便召回。 然后,我需要
我刚刚从 Github 下载了 Atmosphere 样本。当我在聊天样本上运行 jetty:run goal 时,我遇到了一些问题。 我可以使用浏览器访问该页面(http://localhost:9
我有一个包含五个项目的向量。 my_vec 有更换,当我需要时没有更换。最有效的方法是什么? 请注意,在我的向量中,我有两次值“a” - 因此,在返回的打乱向量集中,它们都应该有两次“a”。 最佳答案
我正在尝试学习如何阅读规范。让我们看看尝试压缩后会得到什么:1) 一个空缓冲区和 2) 一个感叹号: >>> zlib.compress(b'', 0) b'x\x01\x01\x00\x00\xff
我是 cuda 的新手,几周前才开始阅读有关并行编程和 cuda 的内容。在我安装了 cuda 工具包之后,我正在浏览 sdk 示例(安装工具包时附带的)并想尝试其中的一些。我从 0_Simple 文
我正在使用 FsCheck 生成自定义数据的 Gen . 假设你有一个函数返回 Gen : let chooseRectangle widthMax heightMax offset = gen
我有一个包含大约 800 万个观察值的数据框。我需要从中提取样本,但想从多个列中采样。 我尝试了以下方法,但不起作用: import pandas as pd state = ['mi', 'mi',
我学习安卓图形,我遇到了一个奇怪的问题: 我发现很多提到“FingerPaint”样本的地方,但我在样本文件夹中找不到它。 只有 47 个示例项目,没有一个是关于图形的。 如何下载此示例?我按照这
假设我有一个 pandas 数据框 rid category 0 0 c2 1 1 c3 2 2 c2 3 3 c3 4 4
我想用 Pandas sample功能,但具有不分组或过滤数据的标准。 import pandas as pd import numpy as np df = pd.DataFrame(np.rand
我正在尝试从 MNIST 数据集中绘制 10 个样本。每个数字之一。这是代码: import sklearn import pandas as pd import matplotlib.pyplot
我是一名优秀的程序员,十分优秀!