我正在从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")
屈服:
您尝试过的地方让您空白:
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()
关于r - R绘图-绘制分组线,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43648750/