gpt4 book ai didi

r - 通过 ggplot2 在 r 中从向量绘制直方图

转载 作者:行者123 更新时间:2023-12-05 01:01:01 24 4
gpt4 key购买 nike

我想通过 ggplot 2 从向量中绘制直方图。数据集是数据集包中的河流

rivers
[1] 735 320 325 392 524 450 1459 135 465 600 330 336 280 315 870 906 202 329
[19] 290 1000 600 505 1450 840 1243 890 350 407 286 280 525 720 390 250 327 230
[37] 265 850 210 630 260 230 360 730 600 306 390 420 291 710 340 217 281 352
[55] 259 250 470 680 570 350 300 560 900 625 332 2348 1171 3710 2315 2533 780 280
[73] 410 460 260 255 431 350 760 618 338 981 1306 500 696 605 250 411 1054 735
[91] 233 435 490 310 460 383 375 1270 545 445 1885 380 300 380 377 425 276 210
[109] 800 420 350 360 538 1100 1205 314 237 610 360 540 1038 424 310 300 444 301
[127] 268 620 215 652 900 525 246 360 529 500 720 270 430 671 1770

起初我尝试了这些但没有用:

> ggplot(rivers,aes(rivers))+geom_histogram()
Error: ggplot2 doesn't know how to deal with data of class numeric
> ggplot(rivers)+geom_histogram(aes(rivers))
Error: ggplot2 doesn't know how to deal with data of class numeric

然后我找到了a similar question并发现我可以通过以下方式实现我的目标:

ggplot()+aes(rivers)+geom_histogram()
or
ggplot()+geom_histogram(aes(rivers))

我阅读了 ggplot 帮助文档并有以下问题:

  • 为什么当我在 ggplot() 或 geom_histogram() 中声明数据集时出现错误,例如 ggplot(data=rivers)?帮助文档指示默认情况下将向量强制转换为数据框,并且必须指定数据集。我的假设是,当未指定数据集时,该函数将搜索全局环境?
  • 为什么当我单独调用 aes(rivers) 或在 geom_histogram() 中调用时它会起作用,但是当我将它放入 gglot() 时出现错误。为什么在这种情况下 aes(rivers) 的位置很重要?
    ggplot(aes(rivers))+geom_histogram()
    Error: ggplot2 doesn't know how to deal with data of class uneval

最佳答案

错误的原因是rivers是一个vector

ggplot(aes(rivers))+
geom_histogram()

Error: ggplot2 doesn't know how to deal with data of class uneval. Did you accidentally provide the results of aes() to the data argument?

将其转换为 data.frame 然后它就可以工作了

library(ggplot2)
library(dplyr)
data_frame(val = rivers) %>%
ggplot(., aes(val)) +
geom_histogram()

数据

set.seed(24)
rivers <- sample(700:1700, 150)

关于r - 通过 ggplot2 在 r 中从向量绘制直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46881458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com