ฉันรู้ว่าฉันมาสายเกินไป แต่ฉันคิดว่าฉันพบวิธีแก้ปัญหาที่ค่อนข้างง่าย
หากคุณมีรูปลักษณ์ของซอร์สโค้ดของfloating.pie()
(เช่นโดยการโทรgetAnywhere(floating.pie)
) คุณจะสังเกตเห็นว่ามันใช้วิธีการที่เรียบง่ายและมีประสิทธิภาพ: การวาดเซ็กเมนต์วงกลมเป็นรูปหลายเหลี่ยม หากสิ่งที่คุณต้องการจากแผนภูมิแท่งของคุณคือแถบ (ไม่มีป้ายชื่อแกน ฯลฯ ) คุณสามารถทำตามวิธีการเดียวกันและเขียนฟังก์ชั่นของคุณเอง นี่คือรุ่นที่รวดเร็วและสกปรก:
# the function
mapbars <- function (x, xllc = 0, yllc = 0, barwidth=1, maxheight=10){
# calculate how long each bar needs to be
bars <- (x/max(x)) * maxheight
# get some quick colors
col <- rainbow(length(x))
for(i in 1:length(x)){
# figure out x- and y coordinates for the corners
leftx <- xllc + ((i-1) * barwidth)
rightx <- leftx + barwidth
bottomy <- yllc
topy <- yllc + bars[i]
# draw the bar
polygon(x=c(leftx, rightx, rightx, leftx, leftx),
y=c(bottomy, bottomy, topy, topy, bottomy),
col=col[i])
}
}
x
สำหรับค่าที่จะถูกแสดงโดยบาร์
xllc
และyllc
ระบุตำแหน่งของมุมซ้ายล่างของแถบด้านซ้ายในระบบพิกัดที่คุณใช้
barwidth
และmaxheight
ใช้สำหรับปรับขนาดของแท่ง
นี่คือตัวอย่างที่มีsp
พล็อตพื้นฐาน ฉันไม่คิดว่าฉันได้ทำงานกับ plotrix
ก่อน แต่ขึ้นอยู่กับวิธีการทำงานของผมคิดว่าเรื่องนี้ควรจะยังทำงานร่วมกับfloating.pie
plotrix
library(sp)
library(maptools) # just for easy access to a background map
# load some country borders as a background
data("wrld_simpl")
plot(wrld_simpl)
# zoom on a bit …
mexico <- subset(wrld_simpl, NAME=="Mexico")
plot(mexico, axes=TRUE)
# data for the bars
x1 <- c(4, 7, 1, 2)
# plot
plot(mexico, axes=TRUE)
mapbars(x=x1, xllc=-110, yllc=20, barwidth=.5, maxheight=5)
legend(x="topright", pch=22, col="black", pt.bg=rainbow(x1), legend=c("foo", "bar", "baz", "foobar"))
# add another one:
x2 <- c(9, 21, 64, 45, 33, 43, 12, 7)
mapbars(x=x2, xllc=-100, yllc=25, barwidth=.2, maxheight=2)
ผลลัพธ์จะเป็นดังนี้:
ggsubplot
แพ็คเกจ แต่ตอนนี้เลิกใช้แล้วและใช้งานไม่ได้ (ดังที่คุณกล่าวไว้) บางทีโพสต์นี้อาจเป็นจุดเริ่มต้น: stackoverflow.com/questions/36063043/ …