แผนที่ความร้อน R ggplot2 บังคับสเกลแบบไม่ต่อเนื่องพร้อมช่วงที่กำหนดเอง เพิ่มตารางลงในแผนที่

ฉันสร้างแผนที่ความร้อนด้านล่าง

แผนที่ความร้อน

ซึ่งฉันใช้รหัสนี้:

library(ggplot2)
library(reshape2)

winners_min_expd0 <- matrix(c(NA, 2, 2, 3, NA, 3, 2, 2, NA), nrow=3, ncol=3, byrow = T)
colnames(winners_min_expd0) <- c("homophily","heterophily","preferential")
rownames(winners_min_expd0) <- c("homophily","heterophily","preferential")
melted_min_expd0 <- melt(winners_min_expd0)
colnames(melted_min_expd0) <- c("winning", "looses", "times")
p_min_expd0 <- ggplot(melted_min_expd0, aes(looses, winning)) +
   geom_tile(aes(fill = times), colour = "white") +
   scale_fill_gradient(low = "white", high = "red") +
   ggtitle("Min function, exp decay off") +
   scale_y_discrete(limits=c("preferential", "heterophily", "homophily")) +
   xlab("(x) looses against (y)") + ylab("(y) winning over (x)")
p_min_expd0

ฉันอยากจะ:

  • ปรับแถบ "ครั้ง" อีกครั้งเป็นช่วง <0:5> ฉันเข้าใจว่าไม่มีค่า {0,1,4,5} แต่ฉันอยากได้ช่วงนี้
  • ทำให้ระดับความร้อน "เวลา" แยกจากกัน ซึ่งหมายถึงสีเดียวสำหรับตัวเลขหนึ่งตัว เช่น 5 = hot red, 4 = red ฯลฯ (อาจซ้ำกัน: แผนที่ความร้อน ggplot2 พร้อมสีสำหรับค่าในช่วง) ช่วงเช่น <0,1) เป็นที่ยอมรับ แต่ฉันชอบตัวเลขธรรมชาติเพียงตัวเดียวในระดับ (แทนที่จะเป็นช่วงค่า)
  • เพิ่มตารางบางๆ บนแผนที่ความร้อน เพื่อให้แผ่นทั้งหมด (รวมถึงแผ่นสีขาว) ถูกแยกออกจากกัน
  • เปลี่ยนสีสีเทาของค่า NA ให้เป็นสีเทาอ่อนกว่า

ได้รับการชื่นชมความช่วยเหลือ เช่นเดียวกับโค้ดที่สั้นลง
ขอบคุณ!


person oski86    schedule 03.07.2015    source แหล่งที่มา


คำตอบ (1)


นี่คือการปรับเปลี่ยนบางอย่าง

p_min_expd0 <- ggplot(melted_min_expd0, aes(looses, winning)) +
   geom_tile(aes(fill = cut(times, breaks=0:5, labels=1:5)), colour = "grey") +
   ggtitle("Min function, exp decay off") +
   scale_y_discrete(limits=c("preferential", "heterophily", "homophily")) +
   scale_fill_manual(drop=FALSE, values=colorRampPalette(c("white","red"))(5), na.value="#EEEEEE", name="Times") + 
   xlab("(x) looses against (y)") + ylab("(y) winning over (x)")

เนื่องจากคุณต้องการมาตราส่วนแยกกัน คุณจึงสามารถดูแล "ความปรารถนา" สองรายการแรกได้โดยการแปลงค่าด้วยตนเองด้วย cut() สิ่งนี้ทำให้ตัวแปรไม่ต่อเนื่องจากตัวแปรต่อเนื่อง เนื่องจากตอนนี้เราใช้สเกลแยกส่วน เราจึงต้องตั้งค่าทางลาดสีด้วย scale_fill_manual สี "กริด" ถูกตั้งค่าด้วยพารามิเตอร์ colour= ใน geom_tile สี NA ถูกตั้งค่าด้วย scale_fill_maual(na.value=)

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

person MrFlick    schedule 03.07.2015
comment
ฉันสังเกตเห็นว่าคำถามของฉันถูกลดระดับลง คุณคิดว่าฉันค้นคว้าข้อมูลไม่เพียงพอ หรือบางทีฉันใช้รูปแบบการเขียนที่ไม่เหมาะสม ฉันอยากเป็นผู้ใช้ SO ที่ดีขึ้น ขอบคุณสำหรับข้อเสนอแนะ - person oski86; 03.07.2015
comment
โดยพื้นฐานแล้วคุณเพิ่งโพสต์รายการแก้ไขที่จะทำกับพล็อตของคุณและขอให้ใครสักคนทำเพื่อคุณ แต่ละงานเหล่านั้นอาจมีคำตอบอยู่แล้วที่นี่ใน SO เป็นเพียงการถามคำถามที่เน้นความชัดเจนทีละข้อและแสดงว่าคุณได้พยายามตอบด้วยตัวเองแล้ว แต่คุณทำงานได้ดีรวมทั้งตัวอย่างที่ทำซ้ำได้ซึ่งมีประโยชน์มาก - person MrFlick; 03.07.2015