将aes_string或aes_q与多个列标签组合在一起

时间:2016-01-25 23:27:12

标签: r ggplot2

我正在尝试使用多个列组合标签,并使用灵活的变量名称来为ggplot2中的标签着色。

我能够使用硬编码的变量名称" ret_cumarpu_cluster"就像这样:

ggplot(mergedata, aes(d2ret, d14cumarpu, col = ret_cumarpu_cluster)) +
    geom_point() +
    geom_text(aes(label=paste(device_bucket, d90installs), col = ret_cumarpu_cluster), hjust = -.15, show.legend = FALSE)

生成此图表:

enter image description here

但是,我想替换硬编码字符串" ret_cumarpu_cluster"使用字符串对象cluster_type生成多个图形。我已经尝试了aes_q和aes_string的各种迭代,但似乎没有一个能够很好地将两个列名粘贴在一起以生成标签。理想情况下,我的代码看起来像:

ggplot(mergedata, aes_string('d2ret', 'd14cumarpu', col = cluster_type)) +
    geom_point() +
    geom_text(aes_q(label=(paste(device_bucket, d90installs)), col = as.name(cluster_type)), hjust = -.15)

正如我所说的,我无法使用aes_q或aes_string来使用粘贴,以允许我拥有多列标签。

作为一种解决方法,我显然可以在数据框中创建一个新列,将这两个字符串粘贴在一起并使用它,但我想知道这是否可行。谢谢!

1 个答案:

答案 0 :(得分:1)

我可以在粘贴前面添加一个〜来让aes将这些名称识别为列。

ggplot(mergedata, aes_string('d2ret', 'd14cumarpu', col = cluster_type)) +
  geom_point() +
  geom_text(aes_q(label=~(paste(device_bucket, d90installs)), col = as.name(cluster_type)), hjust = -.15, show.legend = FALSE)