簡體   English   中英

R plotly - 繪制分組線

[英]R plotly - Plotting grouped lines

我正在從ggplot2遷移到plotly,以便利用它們提供的交互功能。

我確實知道plotly庫有一個ggplotly函數我可以用來封裝原生的ggplot命令,但我想學習如何使用native natively命令繪制類似的圖。

我的問題是,我似乎無法按照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")

產量: 在此輸入圖像描述

你嘗試過的地方讓你一片空白:

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")

由於一些奇怪的原因孤兒線:

在此輸入圖像描述

這是你的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()

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM