[英]Only displaying top 3 bars in a ggplot2 chart
我正在嘗試找出一種僅顯示數據集頂部三欄的方法。 為了簡化操作,我使用菱形數據集來說明我想做的事情。 首先,我按最大到最小的順序排列。
library(data.table)
diamonds <- data.table(diamonds)
diamonds1 <- within(diamonds, cut <- factor(cut, levels=names(sort(table(cut), decreasing=TRUE))))
然后,我作圖。
ggplot(diamonds1, aes(cut, fill=cut)) + geom_bar(position="dodge") + guides(fill=FALSE) + ylab("Count") + xlab("Cut")
我得到了:
但是,我不想看到所有的酒吧,而是只想看到前三名。 另外,我希望這是可重復的,因此,如果數據集發生更改並且前三名不同,則可以使用相同的代碼創建正確的前三名。 有什么辦法嗎?
當然,您可以定義xlim()
。 加:
+ xlim('Ideal', 'Premium', 'Very Good')
在下面的@Arun注釋之后進行編輯 :一種更直接的方法是在將數據提供給ggplot()
之前對數據進行子集化。 您可以使用data.table
的功能來使其快速完成
setkey(diamonds, cut) ## needed for fast subsetting and grouping
tt <- diamonds[, list(count=.N), by=cut] ## same as table(diamonds$cut) but faster
cut.values <- tt[order(count), cut][1:3] ## select top 3 cut values by count
ggplot(diamonds[J(cut.values)], ... ## run the same plot commands on subset of data
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.