Ggplot2が提供するインタラクティブ機能を利用するために、ggplot2からplotlyに移行しています。
Plotlyライブラリにネイティブのggplotコマンドをカプセル化するために使用できるggplotly関数があることは知っていますが、ネイティブのplotlyコマンドを使用して同様のグラフをプロットする方法を学びたいと思いました。
私の問題は、ggplot2のようにグループ化された線をプロットで描画できないように見えることです。
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|
mpg %>%
group_by(manufacturer, class) %>%
summarise(models=n()) %>%
plot_ly(x=~class, y=~models, type="scatter", mode="lines+marker", color=~manufacturer)
例1との違いは、メーカーではなくクラスでグループ化しようとしていることです。
mpg %>%
group_by(manufacturer, class) %>%
summarise(models=n()) %>%
plot_ly(x=~manufacturer, y=~models, type="scatter", mode="lines+marker", color=~class)
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()