2010-09-13 16 views
8

मुझे JFreeChart ओवरलाइड ग्राफ़ के साथ कोई समस्या है। मैं JFreeChart 1.0.13 का उपयोग कर रहा हूँ। मैं जो करने की कोशिश कर रहा हूं ऐसा लगता है जैसे जेएफरी चार्ट के पुराने संस्करणों में करना आसान था?JFreeChart ओवरले के साथ सहायता

ग्राफ एक रेखा चार्ट और एक बार चार्ट दिखाता है। वाई अक्ष के लिए लाइन चार्ट द्वारा प्लॉट की गई डेटा रेंज 0-100 रेंज में है, और बार चार्ट के लिए अक्ष 0-5 रेंज में है।

व्यक्तिगत रूप से, जब मैं प्रत्येक चार्ट बाहर रखना और यह रंग है, वे बहुत अच्छी लग रही। यहाँ एक उदाहरण है:

बार चार्ट alt text लाइन चार्ट alt text

लेकिन जब मैं उन्हें ओवरले, बार चार्ट छोटा हो जाता है अविश्वसनीय रूप से बेकार देखने के लिए ... शायद क्योंकि दोनों डेटासेट के तराजू इसलिए अलग हैं।

उदाहरण: alt text

क्या मैं सच में चाहते हैं दोनों डेटासेट के लिए श्रृंखला डेटा विभाजित है, और बाएं हाथ Y अक्ष पर रेखा चार्ट के लिए 0-100 रेंज को प्रदर्शित करने और बार चार्ट के लिए करने के लिए है नीचे दिए गए मेरे पहले उदाहरण में पूर्ण आकार प्रदर्शित किया गया है, लेकिन ग्राफ़ के दाईं ओर वाई अक्ष पक्ष पर प्रदर्शित 0-5 स्केल है।

ग्राफ बनाने के लिए, मैं पहली बार एक XYSeriesCollection का उपयोग कर बार चार्ट बनाने रहा हूँ, डेटा जोड़ने और साजिश बनाने ...

XYSeriesCollection histogramDataset= new XYSeriesCollection(); 
XYSeries xy= new XYSeries("Temp"); 
xy.add(100,0.0); 
xy.add(101,0.3769791404875597); 
histogramDataset.addSeries(xy); 
... 
final NumberAxis xAxis = new NumberAxis("Temperature C"); 
xAxis.setAutoRangeIncludesZero(false); 
final ValueAxis yAxis = new NumberAxis("Percent Time above Temperature"); 
final XYItemRenderer renderer = new XYBarRenderer(); 

final XYPlot plot = new XYPlot((XYDataset) histogramDataset, xAxis, yAxis, renderer); 

तो मैं एक समान तरीके से लाइन चार्ट बना सकते हैं और जोड़ने भूखंड के लिए दूसरी श्रृंखला ...

final XYSeries xy = new XYSeries("First"); 
final XYDataset xySeriesData = new XYSeriesCollection(); 
final XYItemRenderer xyLineRenderer = new XYLineAndShapeRenderer(); 
xyLineRenderer.setSeriesShape(0, new Line2D.Double(0.0, 0.0, 0.0, 0.0)); 
xyLineRenderer.setSeriesStroke(0, new BasicStroke(4.5f)); 
xy.add(100,100.0); 
xy.add(101,100.0); 
xyseriesData.add(xy); 
plot.setDataset(1, xySeriesData); 
plot.setRenderer(1, xyLineRenderer); 
plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD); 

मेरे संदेह है कि किसी भी तरह प्रत्येक ग्राफ यह खुद साजिश और एक साथ संयुक्त है की जरूरत है। क्या कोई मदद कर सकता है? मैं यहां क्या कर रहा हूं इस तरह कुछ है: alt text

सिवाय इसके कि मैं बार चार्ट पृष्ठभूमि छवि नहीं चाहता हूं। एक्स अक्ष एक जैसा होना चाहिए, और वाई अक्ष सही पैमाने पर दाईं ओर होना चाहिए जो ग्राफ को पूर्ण आकार दिखाए जाने की अनुमति देता है।

किसी भी/सभी उत्तर की सराहना कर रहे हैं ...

उत्तर

6

मैं देख रहा हूँ आप अपने भूखंड के लिए एक दूसरी डेटा सेट और रेंडरर जोड़ रहे हैं, लेकिन आप एक ही रेंज अक्ष का उपयोग करने के लिए उन्हें मजबूर कर रहे हैं। इसके बजाय, दूसरे डेटा सेट की सीमा के लिए साजिश को एक नया NumberAxis दें।

एक तरफ के रूप में, JFreeChart Demo में धुरी से संबंधित उदाहरण को नजरअंदाज न करें, और JFreeChart Developer Guide के मान को कम से कम न समझें।

+0

http://www.jfree.org/jfreechart/ से संबद्ध नहीं है; सिर्फ एक संतुष्ट ग्राहक और कभी-कभी योगदानकर्ता। – trashgod

+1

सही दिशा में धक्का के लिए धन्यवाद। जोड़ना: अंतिम ValueAxis yAxis = नया संख्या एक्सिस ("तापमान पर प्रतिशत समय"); \t \t plot.setRangeAxis (1, yAxis); plot.mapDatasetToRangeAxis (0, 1); MapDataSetToRange कुंजी था ... – Griff

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