当前位置: 首页 > 知识库问答 >
问题:

绘制直方图上的密度曲线

许丁雷
2023-03-14

我正在使用plotly为正在使用的数据集绘制直方图

test  <- data.frame(y = rgamma(1000, shape = 0.25, rate = 0.0054))
plot_ly(x = ~test$y, type = "histogram", nbinsx = "23")

这幅图很好,但我不清楚如何绘制一条平滑的密度曲线流过直方图的轮廓。

详细参考手册建议,

直方图跟踪用plot_ly或add_trace初始化:

plot_ly(df, type="histogram"[, ...])
add_trace(p, type="histogram"[, ...]) 

还有一个histornorm(枚举):|“百分比”|“概率”|“密度”|“概率密度”)histornorm函数,我假设它允许用户绘制密度曲线,但我不确定如何使用该函数。

有兴趣了解其他人是如何处理这个问题的。任何提示或建议都非常感谢。

共有2个答案

衡子琪
2023-03-14

如果您比plotly更熟悉ggplot的API(就像我一样),那么最简单的一个选择是首先使用ggplot2进行绘图。

library(plotly)
library(ggplot2
test  <- data.frame(y = rgamma(1000, shape = 0.25, rate = 0.0054))

p <- ggplot(test, aes(x = y, y = ..density..)) +
   geom_histogram(fill = "steelblue", bins  = 23) +
   geom_density()

ggplotly(p)
孙德宇
2023-03-14

虽然不理想,但这里有一种方法

编辑:已更新y轴限制

library(plotly)

y <- rgamma(1000, shape = 0.25, rate = 0.0054)
dens <- data.frame(x = density(y)$x,
                   y = density(y)$y)

miny <- 0
maxy <- max(dens$y)

plot_ly() %>% 
  add_histogram(x = y) %>% 
  add_lines(data = dens, x = ~x, y = ~y, yaxis = "y2", 
            line = list(width = 3)) %>% 
  layout(yaxis2 = list(overlaying = "y", 
                       side = "right", 
                       range = c(miny, maxy),
                       showgrid = F, 
                       zeroline = F))
 类似资料:
  • 我有一个“长”格式的数据框,它包含两列:第一列值,第二列性别[Male-1/Female-2]。我编写了一些代码来制作整个数据集的直方图(下面的代码)。 但是,我还想在直方图上添加一个密度,以强调性别之间的差异,即我想组合3个图:整个数据集的直方图,以及每个性别的2个密度图。我尝试使用一些示例(一、二、三、四),但仍然不起作用。“密度”代码仅起作用,而“历史密度”的组合不起作用。 P. S.一些例

  • 我想在不显示直方图的情况下绘制密度线,我使用了以下代码:

  • 本文向大家介绍C#绘制曲线图的方法,包括了C#绘制曲线图的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#绘制曲线图的方法。分享给大家供大家参考。具体如下: 1. 曲线图效果: 2. C#代码: 3. 数据缩小一个级别的效果: 4. 完整代码 DrawingCurve.cs: 希望本文所述对大家的C#程序设计有所帮助。

  • 我是matplotlib的初学者,如果这看起来像一个愚蠢的问题,我很抱歉。 我有一个csv文件,其中包含深度学习模型不同层中单个神经元的权重值。由于我的模型中有四个层,因此文件结构如下所示: weight_1weight_2weight_n weight_1weight_2weight_n weight_1weight_2weight_n weight_1weight_2weight_n 正如你所

  • numpy.histogram()函数将输入数组和作为两个参数。 bin数组中的连续元素用作每个bin的边界。 Matplotlib 可以将直方图的数字表示转换为图形。 pyplot子模块的plt()函数将包含数据和数组的数组作为参数,并转换为直方图。

  • 我有一个三维阵列。列的标题是“身高”、“体重”和“年龄”。如何使用或任何其他可用功能绘制三维直方图? 我从这段代码开始,但后来我陷入了如何绘制三维直方图的困境。谢谢你宝贵的时间