首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >绘制连接所有可能的数据点对的分段,用分段斜率符号着色(绘制kendallτ)

绘制连接所有可能的数据点对的分段,用分段斜率符号着色(绘制kendallτ)
EN

Stack Overflow用户
提问于 2020-02-25 14:42:01
回答 1查看 93关注 0票数 0

我的问题与戴维斯和陈(2006)的文章有关,在这个问题中,我们看到了一种方法来可视化Kendall's关于两个变量之间的非参数相关性的τ度量。

给定散点图中的多个数据点,每个点通过一个线段连接到所有其他点。一条线段可以有不同的颜色,如下所示:

  1. 线段为黑色,斜率为阳性
  2. 线段为,斜率为
  3. 线段为蓝色,为其斜率为0(水平平行线);
  4. 线段为黑色,如1.如果其斜率未定义(垂直线)。

下面是原始文章中的一个示例:

我的问题是,我可以生成一个散点图,但不是连接所有可能的对点的线段,根据上述标准改变颜色。

下面是dataset的一个示例:

代码语言:javascript
运行
复制
dataset <- dplyr::tibble(alpha = c(1, 5, 7, 8, 9, 10, 11, 12), 
              beta =  c(7, 7, 5, 4, 3, 14, 15, 18))

我可以生成这样的信息:

代码语言:javascript
运行
复制
ggplot2::ggplot(dataset, aes(x = alpha, y = beta)) + geom_point()

但不是这个:

请注意。该解决方案必须可用于具有大量数据点(~1000)的数据集。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-25 20:43:58

有很多种方法,但是您需要构建自己的片段data.frame。例如。

代码语言:javascript
运行
复制
library(tidyverse)

pd <- dataset %>% 
  mutate(d = map(row_number(), function(x) slice(., -x) %>% rename(x = alpha, y = beta))) %>% 
  unnest(d) %>% 
  mutate(
    slope = (y - beta) / (x - alpha),
    cat = case_when(
      is.infinite(slope) | slope > 0 ~ 'a', 
      slope < 0 ~ 'b',
      slope == 0 ~ 'c'
    )
  )

ggplot() +
  geom_segment(aes(alpha, xend = x, beta, yend = y, color = cat), pd) +
  geom_point(aes(alpha, beta), dataset) +
  scale_color_manual(values = c(a = 'black', b = 'red', c = 'blue'))

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60397153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档