【问题标题】:Removing Labels from Legend in ggplot2从 ggplot2 中的图例中删除标签
【发布时间】:2015-08-21 13:29:28
【问题描述】:

我有下面的数据框,如图所示。如何将图例中显示的值限制为前三个?换句话说,我希望它只显示“A”、“B”和“C”。

graph_table <- read.table(header=TRUE, text="
   names freq  rank percs sums sums_str
1      A 1208 'Top 3'  46.1 61.1    61.1%
2      B  289 'Top 3'  11.0 61.1    61.1%
3      C  105 'Top 3'   4.0 61.1    61.1%
4      D  388     D  14.8 14.8    14.8%
5      E  173     E   6.6  6.6     6.6%
6      F  102     F   3.9  3.9     3.9%
7      G   70     G   2.7  2.7     2.7%
8      H   54     H   2.1  2.1     2.1%
9      I   44     I   1.7  1.7     1.7%
10     J   32     J   1.2  1.2     1.2%
11     K   24     K   0.9  0.9     0.9%
12     L   20     L   0.8  0.8     0.8%
13     M   20     M   0.8  0.8     0.8%
14     N   18     N   0.7  0.7     0.7%
15     O   13     O   0.5  0.5     0.5%
16     P   10     P   0.4  0.4     0.4%
17     Q   10     Q   0.4  0.4     0.4%
18     R   10     R   0.4  0.4     0.4%
19     S    7     S   0.3  0.3     0.3%
20     T    5     T   0.2  0.2     0.2%
21     U    5     U   0.2  0.2     0.2%
22     V    5     V   0.2  0.2     0.2%
23     W    3     W   0.1  0.1     0.1%")

library(ggplot2) 

p <- ggplot(graph_table[1:10,], aes(x=rank, y=percs,   
            fill=names))+geom_bar(stat="identity")
p <- p+geom_text(aes(label=sums_str, y=(sums+4)), size=4)
p

【问题讨论】:

  • 我不确定我是否理解您的问题。 x 轴标签已显示“排名”列的内容。图例显示“名称”列的内容。如您所见,只有少数项目(前三项)在两者之间有所不同。这些是我唯一想出现在图例上的。

标签: r ggplot2 legend


【解决方案1】:

起初很困惑,但您想显示前 3 名,因此其他名称不需要图例。给你:

p <- ggplot(graph_table[1:10,], aes(x=rank, y=percs,   
                                    fill=names))+geom_bar(stat="identity")
p <- p+geom_text(aes(label=sums_str, y=(sums+4)), size=4)
p + scale_fill_discrete(breaks=c("A","B","C"))

【讨论】:

  • 不客气(但请不要假设 SO 上的每个人都是男性)
  • 对不起。这对我很粗鲁。
  • 不用担心 - 它会发生。
猜你喜欢
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 2011-08-26
  • 1970-01-01
  • 1970-01-01
  • 2016-04-19
  • 2018-01-31
  • 1970-01-01
相关资源
最近更新 更多