首页 > 解决方案 > qplot:仅绘制低于阈值的节点

问题描述

我正在尝试制作相异矩阵的可视化图表。使用这个站点,我遇到qgraph了 package 中的函数qgraph。使用该threshold标志,我可以从我的网络中删除高于提供的数值的边缘。这很好用,但是,如果我只想绘制低于某个阈值而不是高于某个阈值的值怎么办?

为此,我回到了这个网站并在这里阅读:如何用 qgraph 绘制接近零的值?cut为此目的使用标志。但是,正如答案所述,此标志只会“调整饱和度,使切点以上的所有内容都具有最强的颜色强度,切点以下的任何内容,饱和度都会变弱。”

我想做的是只在低于我的切割值(或阈值)的之间绘制线,而不是其他任何东西。

以下是一些可重现的数据:

Dist <- data.frame(Sample_1 = c(0.0, 0.245, 0.191, 0.78, 0.5),  
               Sample_2 = c(0.3, 0.0, 0.2, 0.99, 0.6), 
               Sample_3 = c(0.65, 0.45, 0.0, 0.05, 0.8), 
               Sample_4 = c(0.45, 0.06, 0.88, 0.0, 0.7), 
               Sample_5 = c(0.11, 0.79, 0.66, 0.37, 0.0), 
              row.names = c("Sample_1", "Sample_2", "Sample_3", "Sample_4", "Sample_5"))

绘制图表:

qgraph(Dist, layout = "circle", vsize = 5, color = c("cyan", "yellow", "pink", "green3", "gray"), labels = c("Sample_1", "Sample_2", "Sample_3", "Sample_4", "Sample_5"), label.cex = 3, cut = 0.2)

如您所见,cut = 0.2 以上的任何内容也会被绘制并且更暗。 在此处输入图像描述

我只想绘制低于 0.2 阈值的值。有没有办法做到这一点?

谢谢。

标签: rmatrixdata-visualizationnodesthreshold

解决方案


qgraph似乎没有能力削减到阈值以下,因此我们必须操纵输入数据。

替换高于thresholdto的值0NA应该这样做。在相同的输出中使用NA结果,但带有警告。

Dist <- data.frame(
  Sample_1 = c(0.0, 0.245, 0.191, 0.78, 0.5),
  Sample_2 = c(0.3, 0.0, 0.2, 0.99, 0.6),
  Sample_3 = c(0.65, 0.45, 0.0, 0.05, 0.8),
  Sample_4 = c(0.45, 0.06, 0.88, 0.0, 0.7),
  Sample_5 = c(0.11, 0.79, 0.66, 0.37, 0.0),
  row.names = c("Sample_1", "Sample_2", "Sample_3", "Sample_4", "Sample_5")
)

library(qgraph)

qgraph(
  replace(Dist, Dist > 0.2, 0),
  layout = "circle",
  vsize = 5,
  color = c("cyan", "yellow", "pink", "green3", "gray"),
  labels = c("Sample_1", "Sample_2", "Sample_3", "Sample_4", "Sample_5"),
  label.cex = 3
)

reprex 包于 2020-04-06 创建(v0.3.0)


推荐阅读