【发布时间】:2021-01-20 16:03:40
【问题描述】:
我正在尝试用一些数据制作一个 ggplot,用一个因子变量填充点。我会在这里写一个小例子来解释自己。
drap = tibble(id = c("S1", "S2", "S3" , "S4", "S5", "S6", "S7", "S8"),
ret =c (123, 555, 763, 113, 415, 121, 221, 531),
cod = c(1, 5, 1, 3, 5, 1, 5, 8))
#here the "cod" column is converted to a factor with 9 levels (0 to 8).
drap$cod = factor(drap$cod, levels = c(0:8), ordered = TRUE)
plot = ggplot(drap) + geom_count(mapping=aes(x= id, y=ret, fill = cod))
ggplotly(plot)
factor() 函数运行良好(我可以看到所有级别),但问题出在后面。 当我制作情节时,图例只有数据库中显示的值(所以 1、3、5、8)。我想展示一个具有所有因子水平 (0:8) 的图例。我发现使用函数 levels() 可以保存因子级别,但我不知道下一步该做什么。
当然这是一个小例子,一切都应该在闪亮的情况下工作。
编辑:
对于那些对这个问题感兴趣的人,我找到了ggplot 的解决方案,但如果你想使用ggplotly(),它就行不通了。只要您具有与输入相同的数据,@duck 解决方案就可以正常工作。如果您想更改例如变量,它不再起作用(至少没有很多 if 条件)。所以“反应式”解决方案是在ggplot 中使用DROP=FALSE。不幸的是,目前plotly 不支持此功能。
【问题讨论】: