用一个值绘制图表中的数据,用另一个值绘制误差条
Plot a data in a graph by one value and an errorbar by another
我有一个如下所示的数据框:
ID B Group
0 120 5
1 122 5
2 119 5
3 100 4
4 099 4
5 105 4
6 099 3
7 098 3
8 099 3
... ...
"B" 中的值可以与一个组 "Group" 相关联,该组的数字是有序的并且是降序的,但并不总是出现相同的情况。例如 "Group" 5 可以出现 3 次,但 "Group" 2 可以出现 7 次。每个 "Group" 至少出现一次。
现在我想使用 "Group" 作为 x 轴和 "B" 作为带有误差条的 y 轴参数。误差条 max 应为每组的最大值,min 应为每组的最小值。我现在向您展示的图表只是图表最终应该是什么样子的示例。
作为我使用的库 "ggplot",我被告知它不是最适合我想要实现的库,但作为初学者,它是我唯一知道一点的库。
到目前为止,我的代码如下所示:
require("ggplot2")
pplot <- ggplot(data=data, aes(x=Group, y=B))
pplot + geom_errorbar(aes(ymax = Group, ymin=Group ), width= 0.1)
我的解决方案似乎是错误的,并且没有按照我的预期工作。我不知道如何正确地为函数提供最大值和最小值。
我现在的问题是如何制作一个像上面看到的那样用 "B" 作为 y 轴和 "Group" 作为 x 轴的图形,甚至可以使用函数 "geom_errorbar()"为此?
作为下一步,我计划绘制一个 "geom_line",每个 "Group" 的平均值作为其上的一个点。但是一次一个。
您的问题并不完全清楚,因为图表中 B 轴的值与您的 table 不匹配。然而,对于以 A 为组的 B 上的误差线,就是这样(假设你想要 SD - 但使用这种方法你几乎可以计算出你想要的):
vec.sd <- tapply(data$B,data$group,sd)
vec.mean <- tapply(data$B,data$group,sd)
plot(X,Y)
arrows(x0=data$A,x1=data$A,y0=vec.mean-vec.sd,y1=vec.mean+vec.sd,code=3,angle=90,length=0.08)
如果要用误差条图显示每个 "group" 的 B 偏差,x 位置需要是 "group",y 值需要是 min(B ) 和每组的 max(B)。与A值无关,所以要绘制errorbar plot,你需要先转换你的数据,示例代码可能是这样。
library(dplyr)
library(ggplot2)
set.seed(1)
data <- data.frame(x = rep(1:10, 5),
y = sample(1:100, 50, replace = TRUE),
group = sample(c("a", "b", "c", "d", "e"), 50, replace = TRUE))
data_groupby <- data%>%group_by(group)%>%
summarise(ymin = min(y), ymax = max(y))
ggplot(data_groupby, aes(x = group))+
geom_errorbar(aes(ymin = ymin, ymax = ymax))+
theme_bw()
errorbar plot
但是,我认为最适合您的绘图类型,可以使用 Boxplot。
我有一个如下所示的数据框:
ID B Group
0 120 5
1 122 5
2 119 5
3 100 4
4 099 4
5 105 4
6 099 3
7 098 3
8 099 3
... ...
"B" 中的值可以与一个组 "Group" 相关联,该组的数字是有序的并且是降序的,但并不总是出现相同的情况。例如 "Group" 5 可以出现 3 次,但 "Group" 2 可以出现 7 次。每个 "Group" 至少出现一次。 现在我想使用 "Group" 作为 x 轴和 "B" 作为带有误差条的 y 轴参数。误差条 max 应为每组的最大值,min 应为每组的最小值。我现在向您展示的图表只是图表最终应该是什么样子的示例。
作为我使用的库 "ggplot",我被告知它不是最适合我想要实现的库,但作为初学者,它是我唯一知道一点的库。 到目前为止,我的代码如下所示:
require("ggplot2")
pplot <- ggplot(data=data, aes(x=Group, y=B))
pplot + geom_errorbar(aes(ymax = Group, ymin=Group ), width= 0.1)
我的解决方案似乎是错误的,并且没有按照我的预期工作。我不知道如何正确地为函数提供最大值和最小值。 我现在的问题是如何制作一个像上面看到的那样用 "B" 作为 y 轴和 "Group" 作为 x 轴的图形,甚至可以使用函数 "geom_errorbar()"为此?
作为下一步,我计划绘制一个 "geom_line",每个 "Group" 的平均值作为其上的一个点。但是一次一个。
您的问题并不完全清楚,因为图表中 B 轴的值与您的 table 不匹配。然而,对于以 A 为组的 B 上的误差线,就是这样(假设你想要 SD - 但使用这种方法你几乎可以计算出你想要的):
vec.sd <- tapply(data$B,data$group,sd)
vec.mean <- tapply(data$B,data$group,sd)
plot(X,Y)
arrows(x0=data$A,x1=data$A,y0=vec.mean-vec.sd,y1=vec.mean+vec.sd,code=3,angle=90,length=0.08)
如果要用误差条图显示每个 "group" 的 B 偏差,x 位置需要是 "group",y 值需要是 min(B ) 和每组的 max(B)。与A值无关,所以要绘制errorbar plot,你需要先转换你的数据,示例代码可能是这样。
library(dplyr)
library(ggplot2)
set.seed(1)
data <- data.frame(x = rep(1:10, 5),
y = sample(1:100, 50, replace = TRUE),
group = sample(c("a", "b", "c", "d", "e"), 50, replace = TRUE))
data_groupby <- data%>%group_by(group)%>%
summarise(ymin = min(y), ymax = max(y))
ggplot(data_groupby, aes(x = group))+
geom_errorbar(aes(ymin = ymin, ymax = ymax))+
theme_bw()
errorbar plot
但是,我认为最适合您的绘图类型,可以使用 Boxplot。