我正在从ggplot2迁移到plotly,以便利用它们提供的交互功能。

我确实意识到plotly库具有一个ggplotly函数,可以用来封装本机ggplot命令,但是我想学习如何使用本机plotly命令来绘制相似的图形。

我的问题是,我似乎无法像ggplot2一样绘制绘制成组的线条。

基本数据,使用来自ggplot2的默认mpg数据集

mpg %>%
  group_by(manufacturer, class) %>%
  summarise(models=n())

|manufacturer |class      | models|
|:------------|:----------|------:|
|audi         |compact    |     15|
|audi         |midsize    |      3|
|chevrolet    |2seater    |      5|
|chevrolet    |midsize    |      5|
|chevrolet    |suv        |      9|
|dodge        |minivan    |     11|
|dodge        |pickup     |     19|
|dodge        |suv        |      7|
|ford         |pickup     |      7|
|ford         |subcompact |      9|
|ford         |suv        |      9|
|honda        |subcompact |      9|
|hyundai      |midsize    |      7|
|hyundai      |subcompact |      7|
|jeep         |suv        |      8|
|land rover   |suv        |      4|
|lincoln      |suv        |      3|
|mercury      |suv        |      4|
|nissan       |compact    |      2|
|nissan       |midsize    |      7|
|nissan       |suv        |      4|
|pontiac      |midsize    |      5|
|subaru       |compact    |      4|
|subaru       |subcompact |      4|
|subaru       |suv        |      6|
|toyota       |compact    |     12|
|toyota       |midsize    |      7|
|toyota       |pickup     |      7|
|toyota       |suv        |      8|
|volkswagen   |compact    |     14|
|volkswagen   |midsize    |      7|
|volkswagen   |subcompact |      6|


示例1:有效

mpg %>%
  group_by(manufacturer, class) %>%
  summarise(models=n()) %>%
  plot_ly(x=~class, y=~models, type="scatter", mode="lines+marker", color=~manufacturer)


示例2:但是,这仅返回空白图

与示例1的不同之处在于,我尝试按类而不是制造商进行分组。

mpg %>%
  group_by(manufacturer, class) %>%
  summarise(models=n()) %>%
  plot_ly(x=~manufacturer, y=~models, type="scatter", mode="lines+marker", color=~class)


示例3:这是我希望如何绘制的ggplot2版本

mpg %>%
  group_by(manufacturer, class) %>%
  summarise(models=n()) %>%
  ggplot(aes(x=manufacturer, y=models, group=class, color=class)) +
    geom_line() +
    theme_minimal()


如何使示例2看起来像示例3?

最佳答案

奇怪的是,在plotly中执行dplyr group_by的顺序很重要(我不认为这是应该的)。也许这是一个错误,也许是某种我不知道的功能。

此时,plotly还很年轻,并且充满了这样的意想不到的“错误”,因此请谨慎地期待plotly可以完全替代ggplot2,尽管它现在已经关闭了肯定有一些很酷的功能。

这样可以得到您想要的东西:

library(dplyr)
library(plotly)
mpg %>%
  group_by(class,manufacturer) %>%
  summarise(models=n()) %>%
  plot_ly(x=~manufacturer, y=~models, group=~class,
                           type="scatter",color=~class, mode="lines+markers")


屈服:
r - R绘图-绘制分组线-LMLPHP

您尝试过的地方让您空白:

library(dplyr)
library(plotly)
mpg %>%
  group_by(manufacturer,class) %>%
  summarise(models=n()) %>%
  plot_ly(x=~manufacturer, y=~models, group=~class,
                           type="scatter",color=~class, mode="lines+markers")


出于某些奇怪的原因使行孤立:

r - R绘图-绘制分组线-LMLPHP

这是您的ggplot版本供参考:

mpg %>%
  group_by(manufacturer, class) %>%
  summarise(models=n()) %>%
  ggplot(aes(x=manufacturer, y=models, group=class, color=class)) +
  geom_line() + geom_point() +
  theme_minimal()


r - R绘图-绘制分组线-LMLPHP

关于r - R绘图-绘制分组线,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43648750/

10-12 23:26