这是我第一次使用ggplot2。我有一个3列的表,我想在一个图中绘制所有三列的频率分布。我之前只使用了hist(),所以我在这个ggplot2上有点迷失了。这是我的表的一个例子。制表符分隔表,包含3列A,B,C标题。
A B C
1.38502 1.38502 -nan
0.637291 0.753084 1.55556
0.0155242 0.0164394 -nan
3.29355 1.15757 -nan
1.00254 1.10108 0.132039
0.0155424 0.0155424 nan
0.760261 0.681639 0.298851
1.21365 1.21365 -nan
1.216 1.22541 -nan
0.61317 0.738528 0.585657
0.618276 0.940312 0.820591
1.96779 1.31051 1.58609
0.725413 2.29621 1.78989
0.684681 0.67331 0.290221
我通过查找类似的帖子使用了以下代码但最终出现了错误。
library(ggplot2)
dnds <- read.table('dNdS_plotfile', header =TRUE)
ggplot(data=dnds, melt(dnds), aes_(value, fill = L1))+
geom_histogram()
错误:没有id变量;使用all作为度量变量
错误:应使用aes()或aes _()创建映射。
我真的迷失了如何解决这个错误。我想要一个带有三个不同颜色直方图的图形,这些图形在我的最终图中没有重叠。请帮我实现这个目标。谢谢。
答案 0 :(得分:1)
这应该可以实现您的目标。我喜欢加载tidyverse包,它加载了一堆有用的包,比如ggplot2和dplyr。
在 geom_histogram()中,您可以使用参数 binwidth()指定直方图的绑定宽度,或使用 bins()。如果您还希望不堆叠条形,则可以使用参数 position =“dodge”。
请参阅此处的文档:http://ggplot2.tidyverse.org/reference/geom_histogram.html
library(tidyverse)
data <- read.table("YOUR_DATA", header = T)
graph <- data %>%
gather(category, value)
ggplot(graph, aes(x = value, fill = category)) +
geom_histogram(binwidth = 0.5, color = "black")