我尝试使用情节来构建交互式图表,但它未能显示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()
属性,但为什么呢?
答案 0 :(得分:0)
它正在完成您编码的工作。例如,取第一个并在group
函数中完全取出aes()
参数:
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
分组,因此系列将根据{1}}组绘制,分别为0.5,1和2。
答案 1 :(得分:0)
它可能是一个功能,而不是一个错误:一行只能有一种颜色。当对剂量进行分组时,两个分组点具有不同的sup值,例如,点剂量0.5与供给值OJ和VC有关。因此绘图功能必须处理将两种颜色分配给单行的情况。
ggplot通过使用它在数据表中找到的第一种颜色来解决这个问题。如果您对表重新排序,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()