我正在尝试使用plotly构建一个交互式图表,但它无法显示geom_line(),而且我也不确定原因。这不是我的确切示例,但即使是plotly的网页上提供的示例也失败了。这就是它:
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都无济于事。
更新:如果我省略了颜色,线条可以正确绘制:
ggplot(data=datn, aes(x=dose, y=length, group=dose)) +
geom_line(aes(group=dose)) + geom_point()
ggplotly()因此,我总是可以只在geom_point()本身分配geom_point()属性,但是为什么呢?
发布于 2016-09-30 00:54:35
它所做的就是你要做的事情。例如,采用第一个参数,并在aes()函数中完全去掉group参数:
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 )绘制线条。
发布于 2016-10-29 17:55:20
这可能是一个特性,而不是一个bug:一行只能有一种颜色。当按剂量分组时,两个分组的点具有不同的sup值,例如,点剂量0.5与支持值OJ和VC相关。因此,绘图函数必须处理将两种颜色分配给一条线的情况。
ggplot通过使用它在datatable中找到的第一种颜色解决了这个问题。如果您对表格进行重新排序,ggplot将使用另一种颜色表示线条:
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完成:
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()https://stackoverflow.com/questions/39775647
复制相似问题