【问题标题】:Multidimensional dataframe scatterplot with R ggvis package带有 R ggvis 包的多维数据框散点图
【发布时间】:2015-06-25 10:15:44
【问题描述】:

我想绘制一个组合我的数据框df 的多列的散点图。数据框如下所示:

             x            y         a      b      c          d     e  f
1 1.882665e-09 1.324425e-09 0.7034844    160      g       Loc1  0.25 30
2 7.173770e-09 4.830280e-09 0.6733253    160      g       Loc2  0.25 30

我编写的代码允许我绘制 df$x 与 df$y 的图,引入互补变量 f 来表示点的颜色(我有 3 个级别的 f)。

这是代码(对数轴有一些额外的行):

data %>% ggvis(~x, ~y) %>%
+     layer_points(fill = ~factor(f)) %>%
+     scale_numeric("x", trans = "log", expand=0) %>%
+     scale_numeric("y", trans = "log", expand=0)

这是我得到的情节:

是否可以再插入一个参数(如形状)并将 df 的另一列(例如 b 列)用作因子?如果是,如何正确设置图例?

---------------------------------------------- ------------

一些,问题的进展。

我设法绘制了我想要的图,但我仍然不清楚传说。

这是新代码:

data %>% ggvis(~x, ~y) %>%
+     layer_points(fill = ~factor(f), shape = ~factor(b)) %>%
+     scale_numeric("x", trans = "log", expand=0) %>%
+     scale_numeric("y", trans = "log", expand=0) %>%
+     add_axis("x", title = "blabla1") %>%
+     add_axis("y", title = "blabla2") %>%
+     add_legend(c("fill", "shape"))

这是新的图形:

【问题讨论】:

  • 我看到layer_pointsshapestrokesize 参数应该映射到任何变量,就像您对fill 所做的那样。

标签: r legend ggvis


【解决方案1】:

这是mtcars 上的最小演示:

library(ggvis)
mtcars %>%
  ggvis(~mpg, ~wt) %>%
  layer_points(fill = ~factor(cyl), shape = ~factor(cyl), 
               stroke = ~factor(cyl), size = ~factor(cyl)) %>%
  scale_nominal("size", range = c(10, 50)) %>% 
  hide_legend("size")

请注意,size 需要一些特殊处理,但不知道为什么(例如,ggplot 知道如何自动选择比例,也许它与开发相关?)。因此我不得不隐藏图例,但点大小仍然有效。

【讨论】:

  • 感谢您的回答。问题是,在您的示例中,您有不同形状的不同颜色。我想要实现的不仅仅是美学上的变化,而是数量上的变化。在我的图形中,根据日期框架中列的信息,我应该有不同的形状,每个形状都有不同的颜色,遵循数据框架列中给出的指示。
  • 事实上,最后,例如,如果我在数据框的一列中有 7 个级别,我希望每个形状有 7 种不同的颜色
  • 简单地将形状和颜色映射到不同的变量?在我的演示中,为了简单起见,我将所有内容映射到 cyl
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-31
  • 2013-02-13
  • 1970-01-01
相关资源
最近更新 更多