【发布时间】:2017-09-24 17:10:33
【问题描述】:
我正在从 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?
【问题讨论】:
-
@MikeWise 嗯,我尝试使用 mutate() 将列名更改为“klass”,但它仍然给我一个空图。至于总和,我意识到我并没有具体了解基础数据集。 “模型”列已经是一个汇总值,我已经编辑了我的帖子以反映这一点。不过,感谢您指出这一点。
-
是的,我在深入研究后收回了该评论。你看我的新答案了吗?
-
通知似乎已损坏。我没有收到您的评论通知。