问题描述
- 我的目的-如何将图例中的二维密度图形从0更改为1.
- 我在此处生成了两个可变序列数据.我已经使用
stat_density_2d
实现了二维密度图,像这样
- My purpose-How to change the two-dimensional density figure in the legend from 0 to 1.
- I have generated two variable sequence data here. I have realized the two-dimensioned density figures using
stat_density_2d
, like this
p <- ggplot(df, aes(x=spi,y=crop))+
labs(title = "",y = "y", x = "x") +
#geom_raster() +
#geom_point() +
stat_density_2d(geom ="raster",aes(fill = ..density..),contour = F)
但是,图例密度"显示为0.05到0.2.我想将密度"归一化为[0,1]的间隔,其中1表示最高密度,0表示最低密度.我该如何编程,或如何处理原始数据以获得所需的结果.
However, the legend "density" shows from 0.05 to 0.2. I want to normalize the "density" into an interval of [0,1], with 1 for the highest density and 0 for the lowest density. How do I program it, or what do I do with the raw data to get the results I want.
推荐答案
这实际上很容易,您只需将fill = ..density..
更改为fill = ..ndensity..
(注意:现代用法是stat(ndensity)
).
This is actually quite easy, you simply change fill = ..density..
to fill = ..ndensity..
(note: modern usage is stat(ndensity)
).
带有示例数据的默认密度:
Default density with example data:
ggplot(faithful, aes(eruptions, waiting)) +
stat_density_2d(geom = "raster", aes(fill = stat(density)), contour = F)
密度缩放到[0-1]范围:
Density scaled to the [0-1] range:
ggplot(faithful, aes(eruptions, waiting)) +
stat_density_2d(geom = "raster", aes(fill = stat(ndensity)), contour = F)
如果您想在图例中明确包含0:
And if you explicitly want to include 0 in your legend:
ggplot(faithful, aes(eruptions, waiting)) +
stat_density_2d(geom = "raster", aes(fill = stat(ndensity)), contour = F) +
scale_fill_gradient(limits = c(0, NA))
这记录在?stat_density_2d
的计算变量"下.
This is documented under 'computed variables' of ?stat_density_2d
.
这篇关于图例中的二维密度图从0变为1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!