ชื่อเรื่อง Center Plot ใน ggplot2


255

สวัสดีโค้ดง่าย ๆ นี้ (และสคริปต์ของฉันตั้งแต่เช้านี้) เริ่มให้ชื่อฉันเป็น ggplot2 แล้ว

Ubuntu version: 16.04

R studio version: Version 0.99.896

R version: 3.3.2

GGPLOT2 version: 2.2.0

ฉันติดตั้งใหม่ข้างต้นเช้านี้เพื่อลองและแก้ไขปัญหานี้ ....

dat <- data.frame(
time = factor(c("Lunch","Dinner"), levels=c("Lunch","Dinner")),
total_bill = c(14.89, 17.23)
)

# Add title, narrower bars, fill color, and change axis labels
ggplot(data=dat, aes(x=time, y=total_bill, fill=time)) + 
  geom_bar(colour="black", fill="#DD8888", width=.8, stat="identity") + 
  guides(fill=FALSE) +
  xlab("Time of day") + ylab("Total bill") +
  ggtitle("Average bill for 2 people")

ป้อนคำอธิบายรูปภาพที่นี่


53
ใช้... + theme(plot.title = element_text(hjust = 0.5))
J_F

คำตอบ:


334

จากข่าวการเปิดตัวของggplot 2.2.0: "ชื่อเรื่องพล็อตหลักอยู่ในขณะนี้จัดชิดซ้ายในการทำงานที่ดีขึ้นดีขึ้นด้วยคำบรรยาย" ดูplot.titleอาร์กิวเมนต์ใน?theme: "จัดชิดซ้ายโดยค่าเริ่มต้น"

ตามที่ระบุโดย @J_F คุณสามารถเพิ่มtheme(plot.title = element_text(hjust = 0.5))ชื่อเรื่องไว้กึ่งกลาง

ggplot() +
  ggtitle("Default in 2.2.0 is left-aligned")

ป้อนคำอธิบายรูปภาพที่นี่

ggplot() +
  ggtitle("Use theme(plot.title = element_text(hjust = 0.5)) to center") +
  theme(plot.title = element_text(hjust = 0.5))

ป้อนคำอธิบายรูปภาพที่นี่


เมื่อฉันใช้... theme(plot.title = element_text(hjust = 'center'))ฉันได้รับข้อความเตือนข้อผิดพลาด: 1: In unit(rep(xp, n), "npc") : NAs introduced by coercionv2: In validDetails.text(x) : NAs introduced by coercion และไม่มีชื่อ นี่เป็นข้อบกพร่องหรือไม่?
James Hirschorn

2
@JamesHirschorn นี่ไม่ใช่ข้อผิดพลาด ค่าที่ใช้hjustต้องเป็นตัวเลข
Stibu

ในฐานะของ ggplot2 เวอร์ชั่น 3.3.0 ชื่อเรื่องจะอยู่กึ่งกลางโดยค่าเริ่มต้น
Akronix

หากคุณสนใจวิธีอื่น: ย้ายจากกึ่งกลางเป็นชิดซ้ายคุณสามารถใช้คำตอบ SO ดังนี้: stackoverflow.com/a/57792897/2904315
Akronix

ฉันได้เพิ่มรหัสนี้theme(plot.title = element_text(hjust = 0.5))แต่มันไม่ได้ผลมันแปลก
ahbon

134

ตามที่ระบุไว้ในคำตอบโดย Henrikชื่อเรื่องจะถูกจัดเรียงตามค่าเริ่มต้นเริ่มต้นด้วย ggplot 2.2.0 ชื่อสามารถอยู่ตรงกลางโดยการเพิ่มสิ่งนี้ลงในพล็อต

theme(plot.title = element_text(hjust = 0.5))

อย่างไรก็ตามหากคุณสร้างแปลงจำนวนมากอาจน่าเบื่อที่จะเพิ่มบรรทัดนี้ทุกที่ หนึ่งก็สามารถเปลี่ยนพฤติกรรมเริ่มต้นของ ggplot ด้วย

theme_update(plot.title = element_text(hjust = 0.5))

เมื่อคุณรันบรรทัดนี้แล้วแปลงทั้งหมดที่สร้างขึ้นหลังจากนั้นจะใช้การตั้งค่าธีมplot.title = element_text(hjust = 0.5)เป็นค่าเริ่มต้น:

theme_update(plot.title = element_text(hjust = 0.5))
ggplot() + ggtitle("Default is now set to centered")

ป้อนคำอธิบายรูปภาพที่นี่

หากต้องการกลับไปที่การตั้งค่าเริ่มต้นดั้งเดิมของ ggplot2 คุณสามารถรีสตาร์ทเซสชัน R หรือเลือกธีมเริ่มต้นด้วย

theme_set(theme_gray())

2

ggeasyแพคเกจที่มีฟังก์ชั่นที่เรียกว่าeasy_center_title()จะทำแค่นั้น ฉันคิดว่ามันน่าดึงดูดกว่าtheme(plot.title = element_text(hjust = 0.5))และจำได้ง่ายกว่ามาก

ggplot(data = dat, aes(time, total_bill, fill = time)) + 
  geom_bar(colour = "black", fill = "#DD8888", width = .8, stat = "identity") + 
  guides(fill = FALSE) +
  xlab("Time of day") +
  ylab("Total bill") +
  ggtitle("Average bill for 2 people") +
  ggeasy::easy_center_title()

ป้อนคำอธิบายรูปภาพที่นี่

โปรดทราบว่าเป็นของการเขียนคำตอบนี้คุณจะต้องติดตั้งรุ่นพัฒนาggeasyจาก GitHub easy_center_title()กับการใช้งาน remotes::install_github("jonocarroll/ggeasy")คุณสามารถทำได้โดยการทำงาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.