簡體   English   中英

如何在R中為條形圖分配任意x軸值?

[英]How to assign arbitrary x-axis value in R for a barplot?

我希望根據數字列表在R中制作一個帶有1000個垂直條的條形圖。 然后,我希望得到的圖形具有標記為1-10的x軸,在1000列下均勻分布。 但是,我只能弄清楚如何標記每一列而不是我想要的方法。 這是我目前的代碼:

scores <- c(my 1000 data points)
barplot(scores, main="my plot", xlab="my 1000 scores", names.arg=c("list of 1-10"))

有誰知道我是否有可能擁有X軸格式? 謝謝!

您可以通過在正確的位置命名“分數”來實現

scores <- sample(1000)
names(scores)<-NA
names(scores)[seq(1, 1000, 111)]<-1:10
barplot(scores, main="my plot", xlab="my 1000 scores")

這是如何運作的?

我們將分解這一行:

names(scores)[seq(1, 1000, 111)] <- 1:10

我們已經為“得分”(NA)中的每個值指定了一個名稱

我可以用names(scores)來稱呼這些名字,我可以用names(scores)調用這些名字的子集names(scores)[1:10]

現在對於seq(1, 1000, 111) - 這是一個從1到1000的序列,步長為111

所以names(scores)[seq(1, 1000, 111)]是“分數”名稱的子集 - 特別是數字1,112,223等。

我為什么用111? 我們試圖在1000個“槽”中平均分配10個值。 用(1000 - 1)/(10 - 1)計算步數

對於你的第二個例子(10到100步驟為10)我們可以簡單地用一組不同的數字替換<-1:10 seq(10, 100, 10)

請注意, length(1:10)length(seq(10, 100, 10))均為10

現在為您的最終示例length(seq(0, 100, 10))

通過包含0,您添加了一個額外的值(總共11個),因此我們需要在names(scores)使用不同的插槽

(1000 - 1)/(11-1)= 99.9所以我們需要重置名稱

names(scores) <- NA

然后使用新序列設置名稱

names(scores)[seq(1, 1000, 99.9)]<-seq(0, 100, 10)

每個條的x位置由函數本身返回。 所以只需使用xpos <- barplot(...) 您可以從par('usr')計算的y值

或者你使用axis

tmp <- barplot(scores, main="my plot", xlab="my 1000 scores", names.arg=c(""))
axis(1,at=seq(min(tmp),max(tmp),len=10),lab=1:10)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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