【问题标题】:Concatenate a list for plot labels连接绘图标签列表
【发布时间】:2012-07-11 18:13:53
【问题描述】:

我想创建连续变量的区间(离散化/bin)以使用 ggplot 绘制等值线图。在阅读了各种线程后,我决定使用cutquantile 来消除以下问题:a) 手动创建 bin,b) 处理主导状态(否则,我必须手动创建 bin 并查看地图并重新调整垃圾箱)。

但是,我现在面临另一个问题。来自cut 的间隔并不漂亮。所以,我正在尝试关注这个example 和这个example 来制作我漂亮的标签。

这是我的清单:

x <- seq(1,50)

圆角分位数:

qs_x <- round(quantile(x, probs=c(seq(0,0.8,by=0.2),0.9)))

结果:

 0% 20% 40% 60% 80% 90% 
 1  11  21  30  40  45 

使用这些剪辑,我想提出这些标签:

1-11, 12-21, 22-30, 31-40, 41-45, 45+

我确信有一个简单的解决方案可以使用一些 apply 函数转换列表,但我并不精通这些函数。

帮助表示赞赏。

【问题讨论】:

    标签: r


    【解决方案1】:

    3-liner 产生您想要的输出,而不使用 apply

    labels <- paste(qs_x+1, qs_x[-1], sep="-")
    labels[1] <- paste(qs_x[1], qs_x[2], sep="-")
    labels[length(labels)] <- paste(tail(qs_x, 1), "+", sep = "")
    

    第一行构造(x1 + 1) - x2形式的标签,第二行固定第一个标签,第三行固定最后一个标签。这是输出

    > labels
    [1] "1-11"  "12-21" "22-30" "31-40" "41-45" "45+"  
    

    【讨论】:

    • 我提供的输出中有一个额外的标签 (41-45),我认为这就是您所需要的。
    • 非常感谢(是的,我确实需要我在示例中遗漏的那个标签)。我使用for 循环做了类似的事情。我认为你的代码更好。在我接受你的回答之前,我会再等一段时间看看是否有人有更聪明的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多