r - 更改数据结构以在 ggplot 中创建正确的条形图
问题描述
我想在 R 中制作一个图表,我设法在 excel 中制作了它。它是一个条形图,x 轴为物种,y 轴为观测的对数数。我当前在 R 中的数据结构不适合(我认为)制作这张图,但我不知道如何改变它(以一种聪明的方式)。
我(除其他外)有一列“camera_site”(站点 1,site2..),“species”(agouti,paca..),“count”(1, 2..),大约有 50.000 个观察值。
我尝试制作一个数据框,其中包含“物种”列(有 18 个物种)和每个物种的“日志(总观察值)”列(请参阅数据框)但是我只能制作一个点图。
这就是我希望图表的外观: 在 excel 中制作的所需图表
解决方案
从您的屏幕截图中可以看出,您的数据格式似乎正确。假设你的 data.frame 被调用,你需要得到这样一个图的最少代码量如下df
:
ggplot(df, aes(VRM_species, log_obs_count_vrm)) +
geom_col()
许多人直观地尝试geom_bar()
,但geom_col()
等效于geom_bar(stat = "identity")
,如果您已经预先计算了观察结果并且不需要 ggplot 为您进行计数,您将使用它。但是您可能可以通过添加一些内容来更好地装饰情节:
ggplot(df, aes(VRM_species, log_obs_count_vrm)) +
geom_col() +
scale_x_discrete(name = "Species") +
scale_y_continuous(name = expression("Log"[10]*" Observations"),
expand = c(0,0,0.1,0)) +
theme(axis.text.x = element_text(angle = 90))
当然,您可以根据需要自定义主题。
格罗耶斯
推荐阅读
- python - 找不到文件或目录,即使它存在
- python - Celery 4.2.1 (windowlicker) 在 Linux 中不抛出异常
- kubernetes - 如何使用基于应用程序名称的单独日志流将 Kubernetes (EKS) 日志推送到 Cloudwatch 日志
- java - 将从不同网页抓取的数据附加到数组列表中
- python - 如何知道脚本是否在 Spyder 或任何其他 Python IDE 中运行?
- python - 使用 Python 读取大 JSON 文件时出错:“json.decoder.JSONDecodeError: Expecting ',' delimiter”
- python - 以编程方式创建 Amazon MTurk HITLayout 并获取 HITLayoutId?
- java - 如何在无网络模式下将自定义命令行传递给 locust
- .net - 使用 codefirst 连接并创建数据库,错误 26
- rest - OWASP 保护 restapi 免受点击劫持的安全指南,它们准确吗?