簡體   English   中英

僅顯示ggplot2圖表中的前3條

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM