เราจะเปลี่ยนแกน y เป็นเปอร์เซ็นต์เหมือนรูปได้อย่างไร? ฉันเปลี่ยนช่วงแกน y ได้ แต่ไม่สามารถเปลี่ยนเป็นเปอร์เซ็นต์ได้
เราจะเปลี่ยนแกน y เป็นเปอร์เซ็นต์เหมือนรูปได้อย่างไร? ฉันเปลี่ยนช่วงแกน y ได้ แต่ไม่สามารถเปลี่ยนเป็นเปอร์เซ็นต์ได้
คำตอบ:
ใช้:
+ scale_y_continuous(labels = scales::percent)
หรือเพื่อระบุพารามิเตอร์การจัดรูปแบบสำหรับเปอร์เซ็นต์:
+ scale_y_continuous(labels = scales::percent_format(accuracy = 1))
(คำสั่งlabels = percent
ล้าสมัยตั้งแต่เวอร์ชัน 2.2.1 ของ ggplot2)
scales::percent(accuracy = 1)
ไม่ได้เป็นเพราะ*_format()
เวอร์ชันสร้างฟังก์ชันแทน ... สิ่งที่percent()
สร้างขึ้นเพียงอย่างเดียวถูกต้องหรือไม่?
โดยหลักการแล้วคุณสามารถส่งผ่านฟังก์ชันการฟอร์แมตไปยังlabels
พารามิเตอร์:
+ scale_y_continuous(labels = function(x) paste0(x*100, "%")) # Multiply by 100 & add %
หรือ
+ scale_y_continuous(labels = function(x) paste0(x, "%")) # Add percent sign
ตัวอย่างที่ทำซ้ำได้:
library(ggplot2)
df = data.frame(x=seq(0,1,0.1), y=seq(0,1,0.1))
ggplot(df, aes(x,y)) +
geom_point() +
scale_y_continuous(labels = function(x) paste0(x*100, "%"))
ggplot2
และscales
แพ็คเกจสามารถทำได้:
y <- c(12, 20)/100
x <- c(1, 2)
library(ggplot2)
library(scales)
myplot <- qplot(as.factor(x), y, geom="bar")
myplot + scale_y_continuous(labels=percent)
ดูเหมือนว่าstat()
ตัวเลือกถูกถอดออกทำให้เกิดข้อความแสดงข้อผิดพลาด ลองสิ่งนี้:
library(scales)
myplot <- ggplot(mtcars, aes(factor(cyl))) +
geom_bar(aes(y = (..count..)/sum(..count..))) +
scale_y_continuous(labels=percent)
myplot
ยืมมาจาก @Deena ด้านบนการปรับเปลี่ยนฟังก์ชั่นสำหรับป้ายกำกับมีประโยชน์มากกว่าที่คุณคิด ตัวอย่างเช่นฉันมี ggplot ที่ตัวส่วนของตัวแปรที่นับคือ 140 ฉันใช้ตัวอย่างของเธอดังนี้:
scale_y_continuous(labels = function(x) paste0(round(x/140*100,1), "%"), breaks = seq(0, 140, 35))
สิ่งนี้ทำให้ฉันได้เปอร์เซ็นต์ของฉันบนตัวส่วน 140 จากนั้นก็แบ่งมาตราส่วนทีละ 25% แทนที่จะเป็นตัวเลขแปลก ๆ ที่มันผิดนัด สิ่งสำคัญคือการแบ่งมาตราส่วนยังคงกำหนดโดยการนับเดิมไม่ใช่เปอร์เซ็นต์ของคุณ ดังนั้นตัวแบ่งจะต้องมีค่าจากศูนย์ถึงค่าตัวส่วนโดยอาร์กิวเมนต์ที่สามใน "ตัวแบ่ง" เป็นตัวหารหารด้วยตัวแบ่งป้ายจำนวนเท่าใดก็ได้ที่คุณต้องการ (เช่น 140 * 0.25 = 35)
library(scales)
สำหรับสิ่งนี้