Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-连接ggplot2中两个相邻分类变量的最大值和最小值_R_Ggplot2 - Fatal编程技术网

R-连接ggplot2中两个相邻分类变量的最大值和最小值

R-连接ggplot2中两个相邻分类变量的最大值和最小值,r,ggplot2,R,Ggplot2,我现在有一个散点图。每种颜色代表一个分类组,每个组都有一个x轴上的值范围。分类变量范围之间不应存在任何重叠。但是,由于散射点的厚度,看起来有重叠。所以,我想画一条线来连接群的最大点和相邻群的最小点,这样只要这条线没有负斜率,它就可以表明每个分类变量之间没有重叠 我不知道如何使用geom_line()连接y坐标为分类变量的两点。这样做可能吗 任何帮助都将不胜感激 我的阅读理解力不好,所以我误解了这个问题。忽略此答案,除非您想了解geom\u line的lineend=参数 #生成虚拟数据 我的阅

我现在有一个散点图。每种颜色代表一个分类组,每个组都有一个x轴上的值范围。分类变量范围之间不应存在任何重叠。但是,由于散射点的厚度,看起来有重叠。所以,我想画一条线来连接群的最大点和相邻群的最小点,这样只要这条线没有负斜率,它就可以表明每个分类变量之间没有重叠

我不知道如何使用geom_line()连接y坐标为分类变量的两点。这样做可能吗

任何帮助都将不胜感激

我的阅读理解力不好,所以我误解了这个问题。忽略此答案,除非您想了解
geom\u line
lineend=
参数
#生成虚拟数据
我的阅读理解力不好,所以我误解了这个问题。忽略此答案,除非您想了解
geom\u line
lineend=
参数
#生成虚拟数据

df听起来你想要的是
geom_段
而不是
geom_线
。您需要将数据聚合到一个新的数据框中,该数据框中包含要绘制的点。我调整了Brian的样本数据,并使用
dplyr
实现了以下目的:

# sample data
df <- data.frame(xvals = runif(50, 0, 1))
df$cats <- cut(df$xvals, c(0, .25, .625, 1))

# aggregation
library(dplyr)
df_summ = df %>% group_by(cats) %>%
    summarize(min = min(xvals), max = max(xvals)) %>%
    mutate(adj_max = lead(max),
           adj_min = lead(min),
           adj_cat = lead(cats))

# plot
ggplot(df, aes(xvals, cats, colour = cats)) +
    geom_point() +
    geom_segment(data = df_summ, aes(
        x = max,
        xend = adj_min,
        y = cats,
        yend = adj_cat
    ))
#示例数据
df%
汇总(最小值=最小值(xVAL),最大值=最大值(xVAL))%>%
变异(adj_max=铅(max),
调整最小值=导程(最小值),
adj_猫=铅(猫))
#密谋
ggplot(df,aes(xVAL,CAT,颜色=CAT))+
几何点()+
geom_段(数据=df_总和,aes(
x=最大值,
xend=调整最小值,
y=猫,
是的
))


您可以将线段保持为上一类别的颜色,或者将其设置为中性色,这样它们就不会显得那么突出。

听起来您想要的是
geom\u线段
而不是
geom\u线
。您需要将数据聚合到一个新的数据框中,该数据框中包含要绘制的点。我调整了Brian的样本数据,并使用
dplyr
实现了以下目的:

# sample data
df <- data.frame(xvals = runif(50, 0, 1))
df$cats <- cut(df$xvals, c(0, .25, .625, 1))

# aggregation
library(dplyr)
df_summ = df %>% group_by(cats) %>%
    summarize(min = min(xvals), max = max(xvals)) %>%
    mutate(adj_max = lead(max),
           adj_min = lead(min),
           adj_cat = lead(cats))

# plot
ggplot(df, aes(xvals, cats, colour = cats)) +
    geom_point() +
    geom_segment(data = df_summ, aes(
        x = max,
        xend = adj_min,
        y = cats,
        yend = adj_cat
    ))
#示例数据
df%
汇总(最小值=最小值(xVAL),最大值=最大值(xVAL))%>%
变异(adj_max=铅(max),
调整最小值=导程(最小值),
adj_猫=铅(猫))
#密谋
ggplot(df,aes(xVAL,CAT,颜色=CAT))+
几何点()+
geom_段(数据=df_总和,aes(
x=最大值,
xend=调整最小值,
y=猫,
是的
))


您可以将这些部分的颜色保持为上一个类别的颜色,或者将它们设置为中性颜色,这样它们就不会那么显眼。

我完全误解了这个问题,所以您的答案是正确的!我将删除我的,但请随意保留虚拟数据:)我完全误解了这个问题,所以你的答案是正确的!我将删除我的,但请随意保留虚拟数据:)