การแก้ไขป้ายกำกับคำอธิบาย (ข้อความ) ใน ggplot


120

ฉันใช้เวลาหลายชั่วโมงในการค้นหาเอกสารและบน StackOverflow แต่ดูเหมือนว่าไม่มีวิธีใดที่จะช่วยแก้ปัญหาของฉันได้ เมื่อใช้ggplotฉันไม่สามารถรับข้อความที่ถูกต้องในคำอธิบายแผนภูมิแม้ว่าจะอยู่ในดาต้าเฟรมของฉันก็ตาม ฉันได้ลองscale_colour_manualแล้วscale_fill_manualด้วยค่าที่แตกต่างกันlabels=เช่นc("T999", "T888")", "cols".

นี่คือรหัสของฉัน:

T999 <- runif(10, 100, 200)
T888 <- runif(10, 200, 300)
TY <- runif(10, 20, 30)
df <- data.frame(T999, T888, TY)


ggplot(data = df, aes(x=T999, y=TY, pointtype="T999")) + 
       geom_point(size = 15, colour = "darkblue") + 
       geom_point(data = df, aes(x=T888, y=TY), colour = 'red', size = 10 ) + 
       theme(axis.text.x = element_text(size = 20), axis.title.x =element_text(size = 20),   axis.text.y = element_text(size = 20)) +
       xlab("Txxx") + ylab("TY [°C]") + labs(title="temperatures", size = 15) + 
       scale_colour_manual(labels = c("T999", "T888"), values = c("darkblue", "red")) +    theme(legend.position="topright")

ความช่วยเหลือจะได้รับการชื่นชมมาก!


8
มีลักษณะที่กวดวิชานี้เพื่อหาที่รูปแบบข้อมูลggplotมีความสุขมากที่สุดด้วย (ยาวไม่กว้าง) และจะได้รับความรู้สึกสำหรับความแตกต่างระหว่างการทำแผนที่aes thetic กับตัวแปรในการaesโทรเทียบกับการตั้งค่าaesมันนอก คุณต้องการmeltข้อมูลของคุณในรูปแบบยาวและแมปcolour(หรือfill) ในaesตัวแปรที่เกี่ยวข้อง
Henrik

คำตอบ:


146

บทแนะนำที่ @Henrik กล่าวถึงเป็นแหล่งข้อมูลที่ยอดเยี่ยมสำหรับการเรียนรู้วิธีสร้างพล็อตด้วยggplot2แพ็คเกจ

ตัวอย่างข้อมูลของคุณ:

# transforming the data from wide to long
library(reshape2)
dfm <- melt(df, id = "TY")

# creating a scatterplot
ggplot(data = dfm, aes(x = TY, y = value, color = variable)) + 
  geom_point(size=5) +
  labs(title = "Temperatures\n", x = "TY [°C]", y = "Txxx", color = "Legend Title\n") +
  scale_color_manual(labels = c("T999", "T888"), values = c("blue", "red")) +
  theme_bw() +
  theme(axis.text.x = element_text(size = 14), axis.title.x = element_text(size = 16),
        axis.text.y = element_text(size = 14), axis.title.y = element_text(size = 16),
        plot.title = element_text(size = 20, face = "bold", color = "darkgreen"))

ผลลัพธ์นี้ใน:

ใส่คำอธิบายภาพที่นี่

ดังที่ได้กล่าวไว้โดย @ user2739472 ในความคิดเห็น: หากคุณต้องการเพียงแค่เปลี่ยนป้ายกำกับข้อความในตำนานไม่ใช่สีจากจานสีเริ่มต้นของ ggplot คุณสามารถใช้scale_color_hue(labels = c("T999", "T888"))แทนscale_color_manual().


@Sathish อย่างที่คุณเห็นหัวเรื่องของแกน y นั้นเล็กกว่าหัวเรื่องในแกน x ขนาดต่างๆใช้เพื่อแสดงให้เห็นถึงความเป็นไปได้และผลที่ตามมา ดังนั้นรหัสที่ใช้ในคำตอบคือ imo ที่ถูกต้อง
Jaap

@Sathish การเพิ่มความคิดเห็นก่อนหน้าของฉัน: มันเป็นตัวเลือกที่จะทำอย่างนั้นอย่างแน่นอน! ทุกอย่างขึ้นอยู่กับสิ่งที่คุณต้องการบรรลุ ;-)
Jaap

9
หากคุณต้องการเปลี่ยนป้ายข้อความในตำนานเท่านั้นไม่ใช่สีจากจานสีเริ่มต้นของ ggplot คุณสามารถใช้scale_color_hue(labels = c("T999", "T888"))แทนscale_color_manual()
user2739472

1
@ user2739472 Thx & true. จะเพิ่มคำตอบของฉัน
Jaap

@Sathish ฉันช้าไปหน่อย แต่แก้ไขการพิมพ์ผิดแล้ว :-)
Jaap

41

ชื่อตำนานจะมีป้ายโดยเฉพาะความงาม

สิ่งนี้สามารถทำได้โดยใช้guides()หรือlabs()ฟังก์ชั่นจากggplot2(เพิ่มเติมที่นี่และที่นี่ ) ช่วยให้คุณสามารถเพิ่มคุณสมบัติคำแนะนำ / ตำนานโดยใช้การทำแผนที่ความงาม

นี่คือตัวอย่างโดยใช้ไฟล์ mtcarsชุดข้อมูลและlabs():

ggplot(mtcars, aes(x=mpg, y=disp, size=hp, col=as.factor(cyl), shape=as.factor(gear))) +
  geom_point() +
  labs(x="miles per gallon", y="displacement", size="horsepower", 
       col="# of cylinders", shape="# of gears")

ใส่คำอธิบายภาพที่นี่

ตอบคำถามของ OP โดยใช้guides():

# transforming the data from wide to long
require(reshape2)
dfm <- melt(df, id="TY")

# creating a scatterplot
ggplot(data = dfm, aes(x=TY, y=value, color=variable)) + 
  geom_point(size=5) +
  labs(title="Temperatures\n", x="TY [°C]", y="Txxx") +
  scale_color_manual(labels = c("T999", "T888"), values = c("blue", "red")) +
  theme_bw() +
  guides(color=guide_legend("my title"))  # add guide properties by aesthetic

ใส่คำอธิบายภาพที่นี่


ฉันไม่เห็นด้วยกับเรื่องนี้ เมื่อระบุเฉพาะหัวเรื่องจะง่ายกว่าที่จะระบุในอาร์กิวเมนต์scale_ ..หรือ labs
จัป

ผมได้แสดงความคิดเห็นในการแก้ปัญหาของคุณจาก 15 scale_color_manual(title="...", ...)นาทีที่ผ่านมาซึ่งเพิ่มชื่อ ฉันเห็นว่าคุณได้แก้ไขเพื่ออ้างอิงความสวยงามของสีในlabs(). ฉันเสนอวิธีแก้ปัญหาให้เป็นทางเลือก
Megatron

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