【发布时间】:2013-07-26 14:56:22
【问题描述】:
我想在同一个图上创建一个包含多个数据系列的直方图。我能找到的最好的方法是multhist()。我想要一个类似于hist() 风格的绘图,虽然ggplot() 也可以用于执行此任务,但图形风格不是我想要的。
这是一些示例数据:
df <- structure(list(year = c(2011L, 2011L, 2011L, 2011L, 2011L, 2011L,
2011L, 2011L, 2011L, 2011L, 2011L, 2011L, 2011L, 2011L, 2011L,
2011L, 2011L, 2011L, 2011L, 2011L, 2011L, 2011L, 2011L, 2012L,
2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2012L,
2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2012L,
2012L, 2012L, 2012L), count = c(187L, 199L, 560L, 1000L, 850L,
400L, 534L, 911L, 390L, 1008L, 1173L, 1222L, 810L, 950L, 752L,
1125L, 468L, 710L, 290L, 670L, 855L, 614L, 1300L, 950L, 670L,
888L, 490L, 557L, 741L, 700L, 954L, 378L, 512L, 780L, 951L, 398L,
1544L, 903L, 769L, 1399L, 1021L, 1235L, 1009L, 1222L, 255L)), .Names = c("year",
"count"), class = "data.frame", row.names = c(NA, -45L))
这是我目前使用的代码:
require(plotrix)
d2011<-df$count[df$year=="2011"]
d2012<-df$count[df$year=="2012"]
year<-list(d2011,d2012)
mh <- multhist(year, xlab="Count", ylab="Frequency", main="", cex.axis=1, col=c("dark gray", "light gray"), breaks=seq(0,1600, by=200))
box(bty="l", col="black")
legend.text<-c("2011","2012")
legend(locator(1), legend=legend.text, col=c("dark gray", "light gray"), pch=15, bty="n", cex=0.8)
这为我提供了“条形图样式”多直方图,但我在更改两个图形参数时遇到了问题。
我希望该图看起来更像直方图而不像条形图,所以首先我想删除(或减少)列之间的空间。我试过使用
space = NULL,但是这个命令似乎不适用于multhist我想更改 x 轴,以便轴刻度线出现在绘图上的条形之间,并且轴文本与刻度线对齐,而不是定位在条形中点。我曾尝试使用
axis(side=1, …),但由于multhist 使用列表对象来创建绘图,这些命令似乎不起作用。
任何建议将不胜感激。其他有用的图形包的建议,可以绘制具有多个数据集的直方图,也将受到欢迎。
【问题讨论】:
-
你知道你可以改变ggplot2中的“图形风格”(使用
themes)吗? -
@Roland 感谢您的评论。我以前在 ggplot2 中遇到过主题问题,但也许是时候重新审视它们了!谢谢。如果有人知道一种简单的方法,那么弄清楚如何在 multhist 中调整情节仍然很棒。
标签: r graphics histogram plotrix