带有 plotnine 的二维密度图 (stat_density_2d)
2D density plot with plotnine (stat_density_2d)
我正在尝试使用 python 的 plotnine
沿着最后一个示例的线条创建二维密度图:https://r-graph-gallery.com/2d-density-plot-with-ggplot2.html#:~:text=A%202d%20density%20plot%20is,of%20points%20in%20this%20fragment.
应该大致如下所示(使用geom_bin2d
构建),但更平滑。
我累了:
import pandas as pd
import numpy as np
from plotnine import *
df = pd.DataFrame({
'x': np.random.normal(1,1,10000),
'y': np.random.normal(3,2,10000),
})
p = (ggplot(df, aes('x','y'))
+ theme_light()
+ stat_density_2d(aes(fill='..level..'), geom='raster', contour=False)
+ labs(x=None,y=None)
)
p
但最后只有一个黄色的斑点:
在 plotnine
中是否可以按原样使用数据来执行此操作,或者我是否需要进行其他数据转换等?
您应该将 fill
映射到 density
。 level
以线划分,密度以区域划分。
(
...
+ stat_density_2d(aes(fill=after_stat('density')), geom='raster', contour=False)
)
然后设置插值方法使其平滑。
我正在尝试使用 python 的 plotnine
沿着最后一个示例的线条创建二维密度图:https://r-graph-gallery.com/2d-density-plot-with-ggplot2.html#:~:text=A%202d%20density%20plot%20is,of%20points%20in%20this%20fragment.
应该大致如下所示(使用geom_bin2d
构建),但更平滑。
我累了:
import pandas as pd
import numpy as np
from plotnine import *
df = pd.DataFrame({
'x': np.random.normal(1,1,10000),
'y': np.random.normal(3,2,10000),
})
p = (ggplot(df, aes('x','y'))
+ theme_light()
+ stat_density_2d(aes(fill='..level..'), geom='raster', contour=False)
+ labs(x=None,y=None)
)
p
但最后只有一个黄色的斑点:
在 plotnine
中是否可以按原样使用数据来执行此操作,或者我是否需要进行其他数据转换等?
您应该将 fill
映射到 density
。 level
以线划分,密度以区域划分。
(
...
+ stat_density_2d(aes(fill=after_stat('density')), geom='raster', contour=False)
)
然后设置插值方法使其平滑。