【问题标题】:Sorting data vector for a histogram using ggplot and R使用 ggplot 和 R 对直方图的数据向量进行排序
【发布时间】:2017-12-12 14:12:21
【问题描述】:

所以我在蒙特卡洛模拟的向量中有 10.000 个值。我想将此数据绘制为直方图密度图。使用hist() 函数很容易做到这一点,它会自动计算不同值的频率。然而,我的目标是在ggplot 中这样做。

我现在最大的问题是如何转换数据以便ggplot 可以处理它。我希望我的 x 轴显示“价格”,而 x 轴显示频率或密度。我的数据有很多小数,如下面的示例数据所示。

myData <- c(266.8997, 271.5137, 225.4786, 223.3533, 258.1245, 199.5601, 234.2341, 231.7850, 260.2091, 184.5102, 272.8287, 203.7482, 212.5140, 220.9094, 221.2627, 236.3224)

我当前的代码使用hist()-function,图如下所示。

hist(myData,
 xlab ="Price",
 prob=TRUE)
lines(density(myData))

Histogram for the data vector containing 10000 values

您将如何对数据进行排序,以及如何使用ggplot 进行排序?我在考虑是否也应该对数字进行四舍五入?

【问题讨论】:

    标签: r vector ggplot2 histogram montecarlo


    【解决方案1】:

    如果没有看到您的数据样本,很难准确地说出,但您是否尝试过:

    ggplot(myData, aes(Price)) + geom_histogram()
    

    或:

    ggplot(myData, aes(Price)) + geom_density()
    

    【讨论】:

    • 感谢您的评论!我的数据现在是一个长向量,例如myData &lt;- c(266.8997, 271.5137, 225.4786, 223.3533, 258.1245, 199.5601, 234.2341, 231.7850, 260.2091, 184.5102, 272.8287, 203.7482, 212.5140, 220.9094, 221.2627, 236.3224) 我假设我需要将向量转换为 data.frame() 才能使用您的代码?如果所有数据都在一行中,我该怎么做?
    • myData &lt;- data.frame(price = c(266.8997, 271.5137, 225.4786, 223.3533, 258.1245, 199.5601, 234.2341, 231.7850, 260.2091, 184.5102, 272.8287, 203.7482, 212.5140, 220.9094, 221.2627, 236.3224))
    • 非常感谢您的帮助!我现在开始工作了:)
    【解决方案2】:

    试试这个:

    ggplot() +
       geom_bar(aes(myData)) +
       geom_density(aes(myData))
    

    【讨论】:

    • 感谢您的回答。这绘制了数据,但是将向量转换为data.frame后,结果要好得多。
    猜你喜欢
    • 2017-08-30
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    • 2013-07-21
    • 2021-11-10
    相关资源
    最近更新 更多