2012-02-16 8 views
14

से colorbar मैं एक colorRampPalette परिभाषित किया है:कस्टम colorRampPalette

my.colors = colorRampPalette(c("light green", "yellow", "orange", "red")) 

मैं इसके लिए एक colorbar "कथा" आइटम कैसे प्लॉट कर सकते हैं, खासकर केवल आधार संकुल का उपयोग कर? मैं उस रंग ढाल से भरे आयताकार के बाद हूं।

क्या मैं सच के बाद कर रहा हूँ कथा (रंग पट्टी) के एक ही प्रकार का निर्माण करने के लिए एक रास्ता है कि एक "रेखापुंज" रेखापुंज के साथ साजिश रची है है:

require(raster) 
plot(raster("myfile.tif"), legend=T) 

मैं शीर्ष पर इस जगह के लिए सक्षम होना चाहिए एक और साजिश का।

+0

यह मजाकिया है कि बेस आर में ऐसा करना कितना मुश्किल है। आम तौर पर आर में इतना जादू है लेकिन स्पष्ट रूप से रंगीन रंगों के लिए नहीं है। मुझे लगता है सांख्यिकीविद केवल काले और सफेद में सोचते हैं? हाहा – wordsforthewise

उत्तर

19

मैं यह करने के थोड़ी देर पहले एक अच्छा लचीला समारोह बना दिया। पर

> color.bar(colorRampPalette(c("light green", "yellow", "orange", "red"))(100), -1) 

enter image description here

अधिक उदाहरण:

# Function to plot color bar 
color.bar <- function(lut, min, max=-min, nticks=11, ticks=seq(min, max, len=nticks), title='') { 
    scale = (length(lut)-1)/(max-min) 

    dev.new(width=1.75, height=5) 
    plot(c(0,10), c(min,max), type='n', bty='n', xaxt='n', xlab='', yaxt='n', ylab='', main=title) 
    axis(2, ticks, las=1) 
    for (i in 1:(length(lut)-1)) { 
    y = (i-1)/scale + min 
    rect(0,y,10,y+1/scale, col=lut[i], border=NA) 
    } 
} 

तो फिर तुम जैसे कुछ कर सकते हैं http://www.colbyimaging.com/wiki/statistics/color-bars

+0

आपकी धुरी मेरी तुलना में अच्छी है। +1। – Spacedman

+3

यदि आप dev.new निकालते हैं तो आप पैकेज से सबप्लॉट का उपयोग कर सकते हैं: Hmisc इसे मौजूदा भूखंडों पर ओवरले करने के लिए। – Spacedman

9

एक मैट्रिक्स करें ... कुछ कुल्हाड़ियों मानकों के साथ छवि का उपयोग करते

my.colors = colorRampPalette(c("light green", "yellow", "orange", "red")) 
z=matrix(1:100,nrow=1) 
x=1 
y=seq(3,2345,len=100) # supposing 3 and 2345 are the range of your data 
image(x,y,z,col=my.colors(100),axes=FALSE,xlab="",ylab="") 
axis(2) 

image legend

4

colorbar.plot() क्षेत्रों पैकेज से एक मानक समाधान है। बहुत से लोग ऐसे समाधानों के लिए यहां देख रहे होंगे जो मानक साजिश क्षेत्र या मूल एक्स/वाई रेंज के बाहर पौराणिक कथाओं को रखते हैं।

अपनी छवि
  1. की साजिश रचने(),
  2. सममूल्य के साथ कथानक उपकरण का आकार बढ़ाकर (पिन = c (चौड़ाई, लंबाई))
  3. :() colorbar.plot की यह सीमा आसानी से दूर है मूल x और y मानों का उपयोग करके colorbar.plot() को कॉल करना

क्योंकि प्लॉट डिवाइस का क्षेत्र अब विस्तारित हो गया है, तो पौराणिक मूल छवि() प्लॉट के बाहर दिखाई देगा। एक्स और वाई मानों के साथ प्रयोग करना कहीं भी आप चाहते हैं किंवदंती भूमि। ग्रेडियेंट किंवदंती मानक तर्क विकल्पों का उपयोग कर क्षैतिज या लंबवत हो सकती है।

+0

हां लेकिन आपको 'स्ट्रिप' तर्क की भी आवश्यकता है और अब तक यह उतना आसान नहीं है जितना इसे समझना चाहिए। एक कामकाजी कोड उदाहरण आमतौर पर एक अच्छे उत्तर का हिस्सा होता है। – wordsforthewise

0

मुझे पता है कि यह एक बहुत पुराना सवाल है, और उत्तर सभी महान हैं। मैं बस यह इंगित करना चाहता था कि आप कलर बार को levelplot से चिकनी कर सकते हैं।

कुछ नकली डेटा और एक रंग ढाल

mat = matrix(rnorm(400,1,1), ncol=20) 
grad = rev(rainbow(1000, start=rgb2hsv(col2rgb('green'))[1], 
     end=rgb2hsv(col2rgb('blue'))[1])) 

साजिश करें और रंग बार

levelplot(mat, col.regions=grad, colorkey = list(at=seq(0,max(mat),length.out=400))) 

levelplot को यह कार्यक्षमता लंबे जोड़ा गया हो सकता के बाद आप सभी लोगों के लिए आया था में टूट जाता है निर्दिष्ट करते हैं मीठे वर्कअराउंड समाधान के साथ।

संबंधित मुद्दे