【发布时间】:2014-11-14 05:31:48
【问题描述】:
我有一个名为“merged”的数据集,其中包含 3 个数字列“pauseMedian”、“numTotalPauses”和“diff”。我还有一个 splineHull 数据集,其中还包含数字列“pauseMedian”和“numTotalPauses”,以及一个 6 级因子“microstyle”
我有以下代码,效果很好。它绘制一个散点图,然后用根据“微样式”着色的 splineHull 多边形覆盖它。
脚本 1:
ggplot(data=merged,aes(x = pauseMedian, y = numTotalPauses))
+ geom_point()
+ geom_polygon(data = splineHull,
mapping=aes(x=pauseMedian,
y=numTotalPauses,
group=microstyle,
color = microstyle),
alpha=0)
然后,我还想通过添加一个属性 color = diff 来改变散点图中点的颜色。
脚本 2:
ggplot(data=merged,aes(x = pauseMedian, y = numTotalPauses, color = diff))
+ geom_point()
+ geom_polygon(data = splineHull,
mapping=aes(x=pauseMedian,
y=numTotalPauses,
group=microstyle,
color = microstyle),
alpha=0)
我看到以下错误:
错误:提供给连续刻度的离散值
我不知道为什么我会看到这个错误。如果我仍然想要彩色散点图但没有多边形,我运行下面的代码它会再次工作。
脚本 3:
ggplot(data=merged,aes(x = pauseMedian, y = numTotalPauses, color = diff))
+ geom_point()
那么,脚本 2 发生了什么,错误出在哪里,我该如何让它发挥作用?
【问题讨论】:
-
这看起来确实很奇怪 - 如果不查看示例数据,很难查明错误。另外,您是否尝试过将
color=diff移动到geom_point(aes(color=diff))? -
@SeñorO 嗨,是的,我试过了。它给出了同样的错误。在脚本 2 中,有两个颜色属性,一个在 ggplot aes 中,另一个在 geom_polygon aes 中。前者被分配一个数值“diff”,后者被分配一个因子值“microstyle”。我猜,也许 ggplot 不能同时处理数字颜色和因子颜色?
-
实际上,现在我想这可能是正确的——因为它需要为颜色制作一个图例。尝试对多边形使用
fill = microstyle -
您不需要发布整个数据集。只需发布一个小样本,我们就可以使用您的数据重现问题。例如,
dput(merged[sample(1:nrow(merged),20),])输出的帖子。这将提供 20 个随机选择的数据行(对 splineHull 执行相同操作)。 -
使用一些(我希望)与您的数据相似的假数据,我能够得到相同的错误消息。但是,当我颠倒
geom_polygon和geom_point的顺序时,我得到Error: Continuous value supplied to discrete scale。两个几何图形的色阶之间似乎存在冲突,一个是离散的,另一个是连续的,但我不确定为什么会这样。我原以为拥有两个单独的几何图形会产生两个单独的色标。