ฉันรู้ว่ามันเก่า แต่ฟังก์ชั่นนี้ที่ฉันสร้างขึ้นอาจมีประโยชน์กับใครบางคน:
order_axis<-function(data, axis, column)
{
arguments <- as.list(match.call())
col <- eval(arguments$column, data)
ax <- eval(arguments$axis, data)
a<-reorder(with(data, ax),
with(data, col))
df<-cbind.data.frame(data)
within(df,
do.call("<-",list(paste0(as.character(arguments$axis),"_o"), a)))
}
ตอนนี้ด้วยฟังก์ชั่นนี้คุณสามารถพล็อตเชิงโต้ตอบกับ ggplot2 ได้ดังนี้:
ggplot(order_axis(df, AXIS_X, COLUMN_Y),
aes(x = AXIS_X_o, y = COLUMN_Y)) +
geom_bar(stat = "identity")
ดังที่เห็นได้order_axis
ฟังก์ชั่นจะสร้างดาต้าเฟรมขึ้นมาใหม่โดยมีคอลัมน์ใหม่ที่ชื่อเหมือนกัน แต่_o
อยู่ท้าย คอลัมน์ใหม่นี้มีระดับจากน้อยไปมากดังนั้น ggplot2 จะลงจุดโดยอัตโนมัติตามลำดับนั้น
สิ่งนี้ค่อนข้าง จำกัด (ใช้ได้เฉพาะกับอักขระหรือตัวประกอบและการผสมตัวเลขของคอลัมน์และเรียงลำดับจากน้อยไปหามาก) แต่ฉันยังพบว่ามีประโยชน์มากสำหรับการวางแผนระหว่างเดินทาง