首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ggplotly无法显示geom_line

ggplotly无法显示geom_line
EN

Stack Overflow用户
提问于 2016-09-30 00:34:23
回答 2查看 1.6K关注 0票数 2

我正在尝试使用plotly构建一个交互式图表,但它无法显示geom_line(),而且我也不确定原因。这不是我的确切示例,但即使是plotly的网页上提供的示例也失败了。这就是它:

代码语言:javascript
复制
library(plotly)
datn <- read.table(header=TRUE, text='
supp dose length
                   OJ  0.5  13.23
                   OJ  1.0  22.70
                   OJ  2.0  26.06
                   VC  0.5   7.98
                   VC  1.0  16.77
                   VC  2.0  26.14
                   ')

## This one works fine (original example):
ggplot(data=datn, aes(x=dose, y=length, group=supp, colour=supp)) +  geom_line() +  geom_point()
ggplotly()

## This one doesn't (modified the group):
ggplot(data=datn, aes(x=dose, y=length, group=dose, colour=supp)) +  geom_line() +  geom_point()
ggplotly()

ggplot之后,它看起来像这样

但是ggplotly看起来像这样:

怎么回事?尝试:The appliance of geom_line() in ggplot()ggplotly not displaying geom_line correctly都无济于事。

更新:如果我省略了颜色,线条可以正确绘制:

代码语言:javascript
复制
ggplot(data=datn, aes(x=dose, y=length, group=dose)) +          
geom_line(aes(group=dose)) +  geom_point()
ggplotly()

因此,我总是可以只在geom_point()本身分配geom_point()属性,但是为什么呢?

EN

回答 2

Stack Overflow用户

发布于 2016-09-30 00:54:35

它所做的就是你要做的事情。例如,采用第一个参数,并在aes()函数中完全去掉group参数:

代码语言:javascript
复制
ggplot(data=datn, aes(x=dose, y=length, colour=supp)) +  geom_line()

你得到的是和之前完全一样的图。

在第二个示例中,按supp着色,但按dose分组。例如,当dose为0.5时,长度为13.23和7.98。图中有一条连接点(0.5,7.98)和(0.5,13.23)的线。由于您是按dose分组,因此将根据dose组( 0.5、1和2 )绘制线条。

票数 0
EN

Stack Overflow用户

发布于 2016-10-29 17:55:20

这可能是一个特性,而不是一个bug:一行只能有一种颜色。当按剂量分组时,两个分组的点具有不同的sup值,例如,点剂量0.5与支持值OJ和VC相关。因此,绘图函数必须处理将两种颜色分配给一条线的情况。

ggplot通过使用它在datatable中找到的第一种颜色解决了这个问题。如果您对表格进行重新排序,ggplot将使用另一种颜色表示线条:

代码语言:javascript
复制
datn = datn[order(datn$supp, decreasing = T),]

ggplot(data=datn, aes(x=dose, y=length, group=dose, colour=supp)) +  geom_line() +  geom_point()

相比之下,ggplotly更喜欢通过不绘制任何线条来解决歧义。如果没有歧义,绘图也将通过ggplotly完成:

代码语言:javascript
复制
datn$supp2 = c("a", "b", "b", "a", "b", "b")
ggplot(data=datn, aes(x=dose, y=length, group=dose, colour=supp2)) +  geom_line() +  geom_point()
ggplotly()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39775647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档