在直方图(lattice)中添加图例

3

我是R编程的新手,想要制作一张关于性别和对应职业的直方图。

我的问题在于无法在图表中添加图例。

另外,我希望在每个条形图的顶部添加频率数字。

你能帮助我吗?

library(lattice)
histogram(~ job | sex, col=rainbow(7), main="", xlab = "", ylab="(%)")

顺便提一句,我正在尝试使用图例函数,但是出现了以下错误:

Error in strwidth(legend, units = "user", cex = cex) : plot.new has not been called yet

1个回答

3

我猜想你已经阅读了一些介绍材料,教你使用attach。试着放下这个习惯。如果你想使用lattice的话,这是一个坏习惯。(对于编写代码来说,这也是一个普遍的坏习惯。)假设你有一个数据框中的这两个变量:dfrm以长格式存储,那么请尝试以下方法:

library(lattice)
histogram(~ job | sex, data=dfrm, auto.key=TRUE, 
                      col=rainbow(7),  main="", xlab = "", ylab="(%)")
< p > "legend"函数与lattice不兼容,因为它是基础图形。你可以尝试使用,但放置的坐标系统非常不同。

我使用"singer"数据集测试了以上变体,但没有成功。在singer数据集中添加一个"Freq"列后,此示例可正常工作:

singer$Freq <- ave(singer$height, singer$voice.part, FUN=length)
barchart(Freq ~ height, groups = voice.part,
        data = singer, 
        stack = TRUE, horizontal=FALSE,
   par.settings=list(superpose.polygon=list(col=rainbow(8))), 
   auto.key=list(x = .6, y = .7, corner = c(0, 0)))

如果那正是您所需要的,那么您应该“接受”或“勾选”这个答案。 - IRTFM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接