【发布时间】:2017-05-28 21:12:07
【问题描述】:
我正在尝试制作一个图表,显示三明治店不同类型三明治的卡路里计数。 IE。 Subway vs Jimmy John's 的素食三明治有多少卡路里。
我想把它想象成一个条形图,那个
每个三明治的卡路里计数都有一个条形
明显按类型对三明治进行分组:蔬菜、烤牛肉等。供应商。
我的数据看起来像这样(为重现性而编辑):
cleaninput <- data.frame ("type" = c("italian", "turkey", "roastbeef", "club", "veggie", "italian", "turkey", "roastbeef", "veggie"),
"vendor" = c( "subway", "subway", "subway", "subway", "subway", "jimmyjohns", "jimmyjohns", "jimmyjohns", "jimmyjohns"),
"calories" = c(410,280,320,310,230,640,510,540,690))
我尝试像这样迭代数据,其中cleaninput 是我的data.frame:
#set up barplot
barplot(height = mean(cleaninput[['calories']]))
#iterate over sandwich types
for (t in levels(cleaninput[['type']]))
{
cat(t,"\n")
barplot(cleaninput[cleaninput[['type']]==t,][['calories']], add = TRUE)
}
首先设置条形图,然后迭代地添加每种三明治类型的条形图。我understoodadd 设置来做到这一点。我使用lines 和points 命令并复制了下面的示例,对常规绘图做了类似的事情——这就是我想要转移到条形图的内容。
但是,它不起作用,因为它似乎把所有的条都糊在一起了(参见下面的输出)。
我的问题
(如何)我可以解决这个问题吗?最好我想使用 base R 而不是 ggplot 来使它更便携。
有没有比
for-loop 更好的方法?
我查看了tutorials 的分组条形图,但没有看到它们如何转化为我的问题。
当前输出:
【问题讨论】:
-
请以可用的形式提供您的数据或其子集——我们可以复制和粘贴而无需进行格式化,例如通过粘贴
dput(cleaninput)的输出。您可能会考虑学习 ggplot2 。 sthda.com/english/wiki/… -
@R.S.谢谢,我认为我的示例是可复制和可粘贴的,但事实并非如此,我已将其替换为正确的示例。感谢 ggplot 的建议,但正如我上面所说,我想让它在 base 中工作。