r - ggplot2中带有图例的颜色编码PMF
问题描述
我的目标是使用 ggplot2 生成二项分布的两个重叠 PMF,根据我指定的颜色进行颜色编码,底部有一个图例。
到目前为止,我认为我已经正确设置了数据框。
successes <- c(seq(0,10,1),seq(0,10,1))
freq <- c(dbinom(seq(0,10,1),10,0.2),dbinom(seq(0,10,1),10,0.8))
class <- c(rep(' A ',11),rep(' B ',11))
df1 <- data.frame(cbind(successes,freq,class))
然而,这给出了错误的结果。
library(ggplot2)
g <- ggplot(df1, aes(successes),y=freq)
g + geom_bar(aes(fill = class))
我觉得我在效仿一个例子,却得到了完全不同的结果。这(几乎)做了我想要的:如果它给出相对频率,那将是准确的。
g <- ggplot(mpg, aes(class))
g + geom_bar(aes(fill = drv))
几个问题:
1)我的代码块哪里出错了?
2) 有没有更好的方法在一张图中向 PMF 显示?我没有决心使用直方图或条形图。
3) 我该如何设置才能让我能够选择颜色?
4) 如何对 x 轴上的值进行排序?它们不是类别。它们是数字 0-10,并且具有我想保留的自然顺序。
谢谢!
更新
以下两个块起作用。
successes <- c(seq(0,10,1),seq(0,10,1))
freq <- c(dbinom(seq(0,10,1),10,0.2),dbinom(seq(0,10,1),10,0.8))
class <- c(rep(' A ',11),rep(' B ',11))
df1 <- data.frame(successes,freq,class)
ggplot(df1, aes(successes ,y=freq, fill = class)) +
geom_bar(stat = "identity") +
scale_x_continuous(breaks = seq(0,10,1)) +
scale_fill_manual(values = c("blue", "green")) + theme_bw()
和
successes <- c(seq(0,10,1),seq(0,10,1))
freq <- c(dbinom(seq(0,10,1),10,0.2),dbinom(seq(0,10,1),10,0.8))
class <- c(rep(' A ',11),rep(' B ',11))
df1 <- data.frame(successes,freq,class)
ggplot(df1, aes(x=successes,y=freq),y=freq) +
geom_col(aes(fill = class)) +
scale_x_continuous(breaks = seq(0,10,1)) +
scale_fill_manual(values = c("blue", "green")) + theme_bw()
解决方案
我认为您的问题是创建 df1 时成功和频率正在更改为因素
也许这就是你在想的?
successes <- c(seq(0,10,1),seq(0,10,1))
freq <- c(dbinom(seq(0,10,1),10,0.2),dbinom(seq(0,10,1),10,0.8))
class <- c(rep(' A ',11),rep(' B ',11))
df1 <- data.frame(successes = as.numeric(successes), freq = as.numeric(freq), class)
ggplot(df1, aes(x = successes, y = freq)) +
geom_bar(stat = "identity", aes(fill = class))
如果没有,很乐意回答任何进一步的问题!
推荐阅读
- sql - 在 json 数组列中搜索字符串
- wordpress - 将 Wordpress 当前用户发送到 laravel
- javascript - Thingsboard - 在规则链中拆分消息
- html - 具有可扩展行的角材料表,在更改选项卡时自动扩展使用 stackBlitz 示例
- c++ - 错误:渲染器已与窗口关联
- node.js - HTTP 错误:401,通过 bitbucket 管道将我的 webapp 部署到 firebase 时,请求的身份验证凭据无效
- python - 将模块导入测试目录
- linq-to-entities - 将数据添加到嵌套 Web 网格的模型
- swift - UNUserNotification。在一段时间内发送本地通知
- javascript - ** IE11 不支持运算符。如何使用代码将其替换为 Math.pow?