【问题标题】:add legend in a histogram (lattice)在直方图中添加图例(格)
【发布时间】:2011-07-23 02:02:34
【问题描述】:

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

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

另外,我想在每个栏的顶部添加频率编号。

你能帮帮我吗?

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

附:我正在尝试使用图例功能,但出现此错误:

strwidth(legend, units = "user", cex = cex) 错误: plot.new 还没有被调用

【问题讨论】:

    标签: r histogram legend lattice


    【解决方案1】:

    我猜你一直在阅读介绍材料,教你使用attach。试着忘记这一点。如果你想使用格子,这是一个坏习惯。 (以及编写代码的普遍坏习惯。)假设您在数据框中有这两个变量,dfrm 是长格式,然后试试这个:

    library(lattice)
    histogram(~ job | sex, data=dfrm, auto.key=TRUE, 
                          col=rainbow(7),  main="", xlab = "", ylab="(%)")
    

    legend 函数不能很好地与 lattice 混合,因为它是基本图形。你可以试试,但是放置的坐标系很不一样。

    我使用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)))
    

    【讨论】:

    • @user49766 如果这是您想要的,那么您应该“接受”或“检查”答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 2013-07-18
    • 1970-01-01
    • 2013-01-18
    • 2015-11-08
    • 1970-01-01
    • 2022-08-14
    相关资源
    最近更新 更多