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

绘制不带直方图的密度线

赖杰
2023-03-14

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

hist(www, prob=TRUE, xlab = "X", main = "Plot",xlim=c(0,11), ylim=c(0,1), breaks =100)
lines(density(x, adjust=5), col="red", lwd=2) 
lines(density(y, adjust=5), col="blue", lwd=2) 
lines(density(z, adjust=5), col="green", lwd=2)

共有2个答案

慕嘉茂
2023-03-14

使用三个玩具向量,尝试以下操作:

x <- rnorm(100, 0, 1)
y <- rnorm(100, 0.5, 2)
z <- rnorm(100, 1, 1)

plot(density(x, adjust = 5), col = "red", lwd = 2, 
     xlim = c(-20, 20), ylim = c(0, 0.25), xlab = "X") 
par(new=T)
plot(density(y, adjust = 5), col = "blue", lwd = 2, 
     xlim = c(-20, 20), ylim = c(0, 0.25), xlab = "") 
par(new=T)
plot(density(z, adjust = 5), col = "green", lwd = 2, 
     xlim = c(-20, 20), ylim = c(0, 0.25), xlab = "")

您需要以正确的方式调整xlimylim

包建义
2023-03-14

您可以使用图(密度(...))而不是hist

set.seed(123)
x <- rnorm(100, 0, 1)
y <- rnorm(100, 0.5, 2)
z <- rnorm(100, 1, 1)

dens <- lapply(list(x=x, y=y, z=z), density)
ran <- apply(do.call(rbind, sapply(dens, function(i) list(data.frame(x=range(i$x), y=range(i$y))))), 2, range)
plot(dens[[1]], xlim=ran[,1], ylim=ran[,2], type = 'n', main="Density")
lapply(seq_along(dens), function(i) lines(dens[[i]], col=i))
legend("topright", names(dens), col=seq_along(dens), lty=1)

创建于2021-01-31由reprex包(v1.0.0)

使用ggplot2软件包进行绘图更容易:

library(ggplot2)
dat <-data.frame(group=unlist(lapply(c("x", "y", "z"), function(i) rep(i, length(get(i))))), 
                 value=c(x, y, z))
ggplot(dat, aes(x=value, colour=group))+
    geom_density()
 类似资料:
  • 我正在使用plotly为正在使用的数据集绘制直方图 这幅图很好,但我不清楚如何绘制一条平滑的密度曲线流过直方图的轮廓。 详细参考手册建议, 直方图跟踪用plot_ly或add_trace初始化: 还有一个histornorm函数,我假设它允许用户绘制密度曲线,但我不确定如何使用该函数。 有兴趣了解其他人是如何处理这个问题的。任何提示或建议都非常感谢。

  • 我有一个“长”格式的数据框,它包含两列:第一列值,第二列性别[Male-1/Female-2]。我编写了一些代码来制作整个数据集的直方图(下面的代码)。 但是,我还想在直方图上添加一个密度,以强调性别之间的差异,即我想组合3个图:整个数据集的直方图,以及每个性别的2个密度图。我尝试使用一些示例(一、二、三、四),但仍然不起作用。“密度”代码仅起作用,而“历史密度”的组合不起作用。 P. S.一些例

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

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

  • 我正在尝试使用 marplot.lib 库在 Python 中绘制直方图;但是,我一直收到此错误:“属性错误:箱必须单调增加。 这是我目前的代码: 传入的参数是信息。“信息”是一个元组列表,可能如下所示: [(4, 0.7984031936127745), (5, 0.5988023952095809), (5, 0.8739076154806492), (5, 0.736454497632824

  • 问题内容: 我喜欢制作直方图。使用,这对我来说并不是真正的问题,但是当我尝试使用矩形时,矩形从上到下都是。我想用绘制类似于我的直方图的直方图。 这是我的代码: 需要更改什么? 问题答案: “但是当我尝试使用fillRect时,矩形从上到下。” 您需要考虑的几件事。 一条水平线,例如,如果面板尺寸为500,则您希望水平线为450。所以让我们开始 您需要考虑每个数据栏的高度。为此,您需要一个增量,让每