अच्छा, मुझे नहीं पता कि यह बहुत सुंदर है, लेकिन मुझे लगता है कि आप एक ही डेटा स्रोत के साथ दो अलग-अलग भूखंड कर सकते हैं, चलो पॉजिटिव प्लॉट और नकारात्मक प्लॉट कहें।
CPScatterPlot *positivePlot = [[[CPScatterPlot alloc] init] autorelease];
positivePlot.identifier = @"PositivePlot";
positivePlot.dataSource = self;
[graph addPlot:positivePlot];
CPScatterPlot *negativevePlot = [[[CPScatterPlot alloc] init] autorelease];
negativevePlot.identifier = @"NegativePlot";
negativePlot.dataSource = self;
[graph addPlot:negativePlot];
अब, अगर आप अपने plotSpaces ठीक से कॉन्फ़िगर, आप धनात्मक और ऋणात्मक मानों को अलग करने और प्रत्येक भूखंड ठीक से कॉन्फ़िगर कर सकते हैं, क्षेत्र ढाल सहित:
CPXYPlotSpace *positivePlotSpace = [graph newPlotSpace];
positivePlotSpace.xRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(0)
length:CPDecimalFromFloat(100)];
positivePlotSpace.yRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(0)
length:CPDecimalFromFloat(100)];
CPXYPlotSpace *negativevePlotSpace = [graph newPlotSpace];
negativePlotSpace.xRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(-100)
length:CPDecimalFromFloat(100)];
negativePlotSpace.yRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(0)
length:CPDecimalFromFloat(100)];
// Plots configuration
//POSITIVE VALUES
positivePlot.plotSpace = positivePlotSpace;
// Green for positive
CPColor *areaColor = [CPColor colorWithComponentRed:0.0
green:1.0
blue:0.0
alpha:1.0];
CPGradient *areaGradient = [CPGradient gradientWithBeginningColor:areaColor
endingColor:[CPColor clearColor]];
areaGradient.angle = -90.0f;
CPFill *areaGradientFill = [CPFill fillWithGradient:areaGradient];
positivePlot.areaFill = areaGradientFill;
//NEGATIVE VALUES
negativePlot.plotSpace = negativePlotSpace;
// Red for negative
areaColor = [CPColor colorWithComponentRed:1.0
green:0.0
blue:0.0
alpha:1.0];
areaGradient = [CPGradient gradientWithBeginningColor:areaColor
endingColor:[CPColor clearColor]];
areaGradient.angle = -90.0f;
areaGradientFill = [CPFill fillWithGradient:areaGradient];
negativePlot.areaFill = areaGradientFill;
नोट: इस के ऊपर से है मेरे सिर, क्योंकि मेरे पास कोर-प्लॉट दस्तावेज़ नहीं हैं, या इस में परीक्षण करने के लिए एक कार्यप्रणाली कॉन्फ़िगरेशन है, इसलिए वाक्यविन्यास या कुछ बंद हो सकता है, लेकिन मुझे लगता है कि सामान्य अवधारणा को काम करना चाहिए।
चीयर्स
संभवत: आपको अपने मूल्यों को सामान्य बनाने की आवश्यकता होगी। जो मैं देख सकता हूं, सीपीजीडेंट केवल 'CGFloat 0 - 1' स्वीकार करता है। इसलिए यदि आपके मान -1024 से +1024 तक हैं, तो आपको कुल सीमा से ऑफ़सेट जोड़ने और विभाजित करने की आवश्यकता होगी। यह आपको 0-1 से एक नंबर देगा। मैं निश्चित रूप से उत्तर नहीं दे सकता, बी/सी मैंने कोरप्लॉट के साथ कभी काम नहीं किया है। –
@ स्टीफन फर्लानी: इनपुट के लिए धन्यवाद। मैं तुमने कहा के बारे में स्पष्ट नहीं हूँ। क्या आप कृपया इसे विस्तार से समझा सकते हैं –
आप जानते हैं, या तो समय से पहले, या अपने डेटा सेट को देखकर, कि सभी मान 'n' ऐसे हैं जैसे 'j ≤ n ≤ k'। फिर, आप ढाल मान को '(एन - जे)/(के - जे) 'के रूप में प्राप्त कर सकते हैं, जो कि' [0-1]' श्रेणी में होगा। यह रैखिक रूप से 'j' और' k' के बीच इंटरपोलेट करता है। – tJener