r आर में कस्टम रंग स्केल सेट करना



colors visualization (1)

मैं आर। मेरा डेटा में एक कस्टम स्तरीय सेटअप करने की कोशिश कर रहा हूं -5.4 से +3.6 के मानों में और मैं 0 (सफेद) के आसपास के डेटा को केन्द्रित करना चाहता हूं। मैं आंकड़ों के पैमाने को चाहूंगा कि मेरे पास 0 से ऊपर और नीचे के क्रम में समान संख्याएं हैं (मैं इस समय 7 की शूटिंग कर रहा हूं) मुझे जो समस्या है वह यह है कि मैं स्केलिंग सही नहीं पा सकता है और मुझे यकीन नहीं है कि मेरी समस्या कहां है

इस समय मेरा कोड (स्रोत डेटा नीचे पेस्टबिन लिंक में है):

   png('127-2_4_compare_other.png',width = 1200, height = 800, units = "px")
   colfunc <- colorRampPalette(c("blue", "white", "red"))
   f <- function(m) t(m)[,nrow(m):1]
   colorBarz=matrix(seq(-5.5,4,len=15),nrow=1)
   colorBarx=1
   source("127-2_4.CompareMatrix.txt")
   colorBary=seq(-5.4,3.6,len=15)
   cus_breaks=c(-5.400, -4.725, -4.050, -3.375, -2.700, -2.025, -1.350, -0.675,  0.45, 0.90, 1.35, 1.80, 2.25, 2.70, 3.15, 3.60)
   layout(matrix(c(1,2), 1, 2, byrow = TRUE), widths=c(9,1))
   image(f(Compare2and4),axes=FALSE,ylab="Amino acids",xlab="Position",main="Sample 2 vs. 4",col=colfunc(15),breaks=cus_breaks)
   axis(1, seq(from = 0, to = 1, by = 0.03703), labels=c(1:11,1:17))
   axis(2, seq(from = 0, to = 1, by = 0.0526),labels=rev(c("A","R","N","D","C","E","Q","G","H","I","L","K","M","F","P","S","T","W","Y","V")),las=2)
   image(colorBarx,colorBary,colorBarz,col=colfunc(15),axes=FALSE,xlab="",ylab="log(Sample4 / Sample2)",breaks=cus_breaks)
   axis(2,las=2)
   dev.off()

मैं 0 से 3.6 के ऊपर सात समान रूप से विभाजित डिब्बे और 0 से -5.4 नीचे समान रूप से विभाजित डिब्बे की तलाश कर रहा हूं और मुझे सफेद बिन के बीच में हिट करना होगा। अगर कोई भी यह सुनिश्चित करने के लिए हीटमैप कोड को देख सकता है कि कोई स्पष्ट त्रुटियां नहीं हैं तो मैं इसकी सराहना करता हूं। स्रोत डेटा का पेस्टबिन


आपके प्रस्तावित रंग पैमाने के साथ समस्या यह है कि पैमाने पर प्रत्येक बिंदु के बीच की अवधारणात्मक दूरी बराबर नहीं है। नकारात्मक अंत की तुलना में, समान रंग दूरी सकारात्मक अंत पर डेटा मानों की एक बड़ी रेंज को दर्शाती है। मैं पहिया को फिर से बदलने का सुझाव नहीं देता, और ggplot की महान क्षमताओं का ggplot

डिफ़ॉल्ट रूप से, डाइविंग कलर स्केल को श्वेत होगा जो कि मान 0 में मध्यबिंदु के रूप में होगा।

उदाहरण के लिए:

Compare2and4_t <- t(Compare2and4)[,nrow(Compare2and4):1]
am_ac <- c("A","R","N","D","C","E","Q","G","H","I","L","K","M","F","P","S","T","W","Y","V")
pdat <- data.frame(x = 1:nrow(Compare2and4_t), 
                   y = factor(rep(am_ac, each = nrow(Compare2and4_t)), levels = rev(am_ac)),
                   val = c(Compare2and4_t))

library(ggplot2)
library(scales)

ggplot(pdat, aes(x, y, fill = val)) + 
  geom_tile() +
  scale_fill_gradient2(low = 'darkblue', high = 'darkred', 
                       limits = c(-5.4, 3.6), oob = squish) +
  coord_equal(expand = FALSE) +
  scale_x_continuous(breaks = unique(pdat$x)) +
  theme_classic() +
  labs(x = 'Position', y = 'Amino acids')





visualization