2011-08-16 14 views
22

मेरा बार चार्ट हमेशा डिफ़ॉल्ट रूप से ढाल रंग के साथ खींचा जाता है। मैं बस एक साधारण रंग बिना किसी स्टाइल प्रभाव चाहता हूं।जेएफरी चार्ट बार चार्ट -> कोई ढाल

क्या कोई मदद कर सकता है?

कोड:

final JFreeChart chart = ChartFactory.createBarChart(
     "",   // chart title 
     xLabel,    // domain axis label 
     yLabel,     // range axis label 
     dataset,     // data 
     PlotOrientation.VERTICAL, // orientation 
     true,      // include legend 
     false,      // tooltips? 
     false      // URLs? 
    ); 

    final CategoryPlot plot = chart.getCategoryPlot(); 
    // SOMETHING HAS TO BE DONE HERE 

    showChart(chart); // Simply shows the chart in a new window 

धन्यवाद

+1

अपना कोड पेस्ट करें। ज्यादातर मामलों में आपको इसे ढाल बनाने के लिए कुछ कोड जोड़ना चाहिए: यथार्थतम शीर्षक के लिए GradientPaint –

+0

+1। वेब 2.0 अलविदा! –

उत्तर

39

समस्या आप उपयोग कर रहे हैं BarPainter में निहित है। JFreeChart संस्करण 1.0.13 डिफ़ॉल्ट GradientBarPainter का उपयोग करना है जो बार के लिए धातु-आश देखें। यदि आप "पुराना" देखो चाहते हैं तो समाधान StandardBarPainter का उपयोग करना है।

final CategoryPlot plot = chart.getCategoryPlot(); 
((BarRenderer) plot.getRenderer()).setBarPainter(new StandardBarPainter()); 

ऐसा करना चाहिए।

वैकल्पिक रूप से, आप JFreeChart के BarRenderer का उपयोग करना चाहते हैं, तो आप इसे अपने रेंडरर आरंभ से पहले स्थिर विधि setDefaultBarPainter() फोन करके StandardBarPainter का उपयोग करने के लिए मजबूर कर सकता है।

final CategoryPlot plot = chart.getCategoryPlot(); 
BarRenderer.setDefaultBarPainter(new StandardBarPainter()); 
((BarRenderer) plot.getRenderer()).setBarPainter(new BarPainter()); 

आप चार्ट आप हमेशा ChartFactory का उपयोग कर के ऊपर के बजाय जमीन से यह निर्माण कर सकते हैं की अधिक नियंत्रण चाहते हैं, लेकिन वह एक बहुत अतिरिक्त कोड की आवश्यकता होती है।

+2

+1 मैंने समस्या के इस पहलू को पूरी तरह से अनदेखा किया। :-) – trashgod

+1

बढ़िया! मैं लंबे समय तक समाधान की तलाश में था! समाधान के लिए –

+0

कुडोस। "डिफ़ॉल्ट" (मुझे लगता है) बार चार्ट में यह बहुत सस्ता दिखता है। – rbaleksandar

2

source codeorg.jfree.chart.demo.BarChartDemo1 के लिए श्रृंखला रंग सेट करने के लिए कैसे पता चलता है। केवल ग्रेडियेंट्स के बजाय सादे रंग निर्दिष्ट करें।

renderer.setSeriesPaint(0, Color.red); 
renderer.setSeriesPaint(1, Color.green); 
renderer.setSeriesPaint(2, Color.blue); 

सुधार: @ के लिए महत्वपूर्ण जेस के सहायक answerBarRenderer में defaultBarPainter के प्रारंभ में पाया जा सकता है।

+0

भी काम नहीं करता है, फिर भी सब कुछ ढाल के साथ खींचा जाता है। दुर्भाग्य से मैं अभी तक एक छवि अपलोड नहीं कर सकता :(इसके अलावा यदि तीन से अधिक कॉलम हैं तो ऊपरी समाधान पर क्या होगा? – shorty

+0

एक छवि अच्छी होगी, लेकिन कोड बेहतर होगा। अगर आप कुछ भी नहीं करते हैं, तो आपको मिलना चाहिए ['DefaultDrawingSupplier'] (http://www.jfree.org/jfreechart/api/javadoc/org/jfree/chart/plot/DefaultDrawingSupplier.html) द्वारा निर्धारित रंग। – trashgod

+0

@ बृहस्पति जोन्स: अनुस्मारक के लिए धन्यवाद; अपडेट किया गया। – trashgod

6

इससे पहले कि आप चार्ट ChartFactory से आप चार्ट विषय निर्धारित कर सकते हैं बनाने के लिए:

ChartFactory.setChartTheme(StandardChartTheme.createLegacyTheme()); 

डिफ़ॉल्ट JFreeTheme जो ढाल जोड़ता है। निम्नलिखित विषय उपलब्ध हैं:

ChartFactory.setChartTheme(StandardChartTheme.createJFreeTheme()); 
ChartFactory.setChartTheme(StandardChartTheme.createDarknessTheme()); 
+0

इस समाधान ने मुझे StackedBarChart का उपयोग करने में मदद की जो renderer में barPainter को बदलकर प्रभावित नहीं था। शायद मैं गलत रेंडरर का उपयोग कर रहा था। फिर भी यह मदद करता है। – Garet

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