【问题标题】:R: graphing upper and lower bounds with ggplot2R:用 ggplot2 绘制上下界
【发布时间】:2011-01-18 21:11:32
【问题描述】:

我有一个包含三个变量的数据集。一个连续的自变量、一个连续的因变量和一个对如何进行测量进行分类的二元变量。使用 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 图形库来做到这一点,我很想知道如何。但是,如果不可能,我愿意听取其他方式来表示这些数据。就我的目的而言,仅根据颜色区分类别不足以强调类别的上限/下限性质。

【问题讨论】:

    标签: r graphics ggplot2 bounds


    【解决方案1】:

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

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

    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") 参数,因为随机数据看起来很奇怪。

    【讨论】:

    • 这看起来很棒。你完全理解了这个问题,我很欣赏你的回应。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2014-08-07
    • 2018-04-08
    • 1970-01-01
    • 2013-08-12
    • 2016-01-26
    • 1970-01-01
    • 2022-08-13
    • 1970-01-01
    相关资源
    最近更新 更多