【问题标题】:Why ggtern doesn't plots some points?为什么 ggtern 不绘制一些点?
【发布时间】:2016-04-07 16:32:47
【问题描述】:

我正在尝试从包含正值和负值的 data.frame 进行绘图,但我无法绘制所有点。有人知道,是否可以调整代码以绘制所有点?

example = data.frame(X1=c(-1,-0.5,1),X2=c(-1,0.7,1),X3=c(1,-0.5,2))
ggtern(data=example, aes(x=X1,y=X2,z=X3)) + geom_point()

【问题讨论】:

  • 我认为您的(样本)数据不符合构建三元图的要求。

标签: r ggplot2 ggtern


【解决方案1】:

实际上,您的点已被绘制出来,但它们位于绘图区域之外。

首先,要理解为什么,你的数据的每一行必须求和,否则它将被强制,因此你将绘制如下:

example = example / matrix(rep(rowSums(example),ncol(example)),nrow(example),ncol(example))
example

        X1        X2        X3
1 1.000000  1.000000 -1.000000
2 1.666667 -2.333333  1.666667
3 0.250000  0.250000  0.500000

现在行总和为一:

print(rowSums(example))
[1] 1 1 1

您有负值,这在“成分”方面是荒谬的,但是,仍然可以绘制负浓度,因为它们将以数字形式表示三元区域之外的点,让我们扩大限制并渲染以查看它们的位置:

ggtern(data=example, aes(x=X1,y=X2,z=X3)) + 
  geom_mask() + 
  geom_point() +
  limit_tern(5,5,5)

【讨论】:

    猜你喜欢
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多