r - “不是 gg/ggplot 类的 S3 对象”错误
问题描述
我收到以下错误:
错误:
data
必须是数据框或其他可fortify()
强制转换的对象,而不是 gg/ggplot 类的 S3 对象
这是我的代码,它与不同的数据集完美配合:
household_income <- ggplot(household_income, aes(nationality, avg_income))
household_income +
geom_boxplot(aes(fill=factor(nationality))) +
geom_dotplot(binaxis='y',
stackdir='center',
binwidth = 1,
dotsize = .45,
fill="red") +
theme(axis.text.x = element_text(angle=0, vjust=.9))
我实际上是在尝试在这里复制 Box_Dot 图
解决方案
您也可以使用中常用的管道 ( %>%
)dplyr
将数据传递给ggplot
制作示例data.frame:
household_income = data.frame(
nationality =sample(1:5,100,replace=TRUE),
avg_income = rnbinom(100,mu=50,size=1)
)
不知道您的 data.frame (因此请提供它以使其成为最小可重复的示例),为了geom_dotplot()
覆盖boxplot()
,国籍必须是一个因素。我曾经mutate()
在下面动态分解它。你在箱线图上设置了一个较低的 alpha 来查看这些点:
library(ggplot2)
library(magrittr)
household_income %>%
mutate(nationality=factor(nationality)) %>%
ggplot(aes(nationality, avg_income))+
geom_boxplot(aes(fill=nationality),alpha=0.1) +
geom_dotplot(binaxis='y',stackdir='center',dotsize=0.45,fill='red') +
theme_bw()
推荐阅读
- json - Chilkat - 从两个数组生成单个 Json 数组
- informatica - Informatica 时间错误,与源数据和目标数据不匹配
- c# - ASP.NET CORE 中有意义的 URL 路由
- java - 使用 ESIG/DSS 将数字签名添加到带有可见时间戳和原因字段的 PDF
- c - 将数字从文件复制到数组时使用 printf 时出现问题
- android - 我有一个 3 列的 Listview,其中包含来自 SQLite DB 的数据和一个 seachview 窗口。我创建了一个自定义数据。搜索未正确执行
- php - curl函数中来自GET的编码url
- css - AngularDart 从包中指定字体
- c# - 使用 Lambda 表达式声明变量和使用 = 运算符有什么区别
- r - 根据日期折叠