1

我有一个包含三个变量的数据集。一个连续自变量、一个连续因变量和一个二元变量,用于对如何进行测量进行分类。使用 ggplot,我知道我可以使用按类别着色的点制作散点图:

g <- ggplot(dataset, aes(independent, dependent))
g + geom_point(aes(color=catagory))

但是,我想知道是否有一种方法可以制作一个图表,其中有一条从类别 0 的点向上延伸的垂直线和一条从类别 1 的点向下延伸的垂直线。它看起来像这样:

-   |        |    |
|   |        |    |
|   |        |    |
|   |        |    |
-   |        |  o |
|   |        |  | |
|   |    o   |  | |
|   | o  |   |  | |
-   | |  |   o  | o
|   | |  |      |
|   o |  |      |
|     |  |      |
+----|-----|-----|-----|-----|

想要这样的图的原因是一个类别代表一个上限(线向下的点),一个类别代表一个下限(线向上的点)。拥有这些线可以很容易地可视化这些边界之间的区域,以及绘制在顶部的函数是否可以准确地表示数据:

-   |        |    |
|   |        |    |
|   |        |    |
|   |        |    |
-   |        |  o |   _____
|   |        |  |_|__/
|   |    o   |_/| |
|   | o  |__/|  | |
-   | | /|   o  | o
|  _|_|/ |      |
| / o |  |      |
|/    |  |      |
+----|-----|-----|-----|-----|

如果有任何方法可以使用 ggplot 或任何其他 R 图形库来做到这一点,我很想知道如何。但是,如果不可能,我愿意听取其他方式来表示这些数据。仅仅基于颜色区分类别并不足以强调我的目的的类别的上限/下限性质。

4

1 回答 1

2

以下内容对您有用,我希望我能很好地理解这个问题。

首先,为数据帧生成一些随机数据,因为没有提供样本数据。随机数会使情节变得丑陋,我希望真实数据看起来会更好:

dataset <- data.frame (
    independent = runif(100),
    dependent = runif(100),
    catagory = floor(runif(100)*2))

接下来,根据每个案例的“类别”找到绘图的上半部分或下半部分(= 最小值/最大值):

dataset$end[which(dataset$catagory == 0)] <- max(dataset$dependent)
dataset$end[which(dataset$catagory == 1)] <- min(dataset$dependent)

现在,我们可以使用geom_segment()绘制数据。

g <- ggplot(dataset, aes(independent, dependent, min, max))
g + geom_segment(aes(x=independent, y=dependent, xend=independent, yend=end, color=catagory)) 

替代文字

请注意,我还在+ theme_bw() + opts(legend.position = "none")绘图中添加了参数,因为随机数据看起来很奇怪。

于 2011-01-19T00:01:14.047 回答