我试图使用scale_colour_gradientn 来清楚地显示负值与正值:负值是蓝色,正值是红色。但是gradientn似乎忽略了我的颜色向量,并且只制作了一个大渐变而不是n个小渐变。这是我的示例代码...
xx <- -100:100
yy <- xx
fma <- data.frame( xx, yy)
ggplot( fma) +
geom_point( aes( xx, yy, col=yy)) +
scale_colour_gradientn(
colours=c('#0000ff','#0000ff','#ff0000','#ff0000'),
values=c( -100, -1, 1, 100))
Run Code Online (Sandbox Code Playgroud)
我怎样才能说服gradientn把所有东西都涂成[-100,-1]蓝色,把所有东西涂成[1,100]红色?
如果您想将颜色比例保持为渐变,而不是二分比例,您可以这样做:
xx <- -100:100
yy <- xx
fma <- data.frame( xx, yy)
ggplot( fma) +
geom_point( aes( xx, yy, col=yy)) +
scale_colour_gradientn(
colours=c('indianred4','indianred1','white','darkseagreen1','darkseagreen4'),
values=c( 0, 49.5, 50, 50.5, 100)/100)
Run Code Online (Sandbox Code Playgroud)
值参数仅采用 0 到 1 之间的值,这意味着在您的情况下,-100 等于 0,100 等于 1。
我添加了白色,它对应于 ~0,用于中性。通过将 0.495 设置为 0.40 以及 0.50 到 0.50,可以扩展此白色范围
另请注意,为了方便和可读性,我为 value 参数创建了一个不带小数的向量,然后将其除以 100,以重新缩放它,以便 value 参数可以使用它。
| 归档时间: |
|
| 查看次数: |
3591 次 |
| 最近记录: |