2012-06-22 18 views
7

मैं अपने जावाएफएक्स लाइनकार्ट को स्टाइल करने की कोशिश कर रहा हूं, लेकिन विशिष्ट श्रृंखला में रंग सेट करने का कोई तरीका नहीं मिल रहा है। मुझे पता है, कि मैं सीएसएस के माध्यम से शैली बना सकता हूं, लेकिन मुझे नहीं पता कि मेरी श्रृंखला में आईडी या क्लास कैसे सेट करें।जावाएफएक्स XYChart.Series के लिए विशिष्ट रंग कैसे सेट करें?

  1. कैसे linecharts करने के लिए एक रंग सेट करने के:

    किसी को मुझ पर एक सुराग दे सकते हैं?

  2. सीएसएस कक्षा को श्रृंखला में कैसे सेट करें?

उत्तर

12

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

उत्तर के साथ जाने के लिए JavaFX line chart style और sample program गतिशील रूप से बदलने के बारे में जानकारी यहां दी गई है। नमूना ऐप में, सभी अतिरिक्त सीएसएस स्टाइल कोड से सेट स्टाइल कॉल के माध्यम से किया जाता है। एक समान लुकअप तकनीक का उपयोग करके, आप सेट स्टाइल कॉल के बजाय उचित स्टाइलशीट स्टाइलक्लास लागू करने के लिए श्रृंखला नोड्स तक पहुंच प्राप्त कर सकते हैं।

+0

बस कहना चाहता था कि आपके पास गिट अकाउंट पर कुछ अच्छे नमूना कार्यक्रम हैं। मैं आज उनके सामने भाग गया, और बस कुछ घंटों खो दिया बस उन्हें देख रहा था। एक बहुत उपयोगी संसाधन। धन्यवाद। –

+1

मुझे विश्वास है कि सीएसएस-आधारित चार्ट स्टाइल 'डैशबोर्ड' सॉफ़्टवेयर के लिए अच्छी तरह से काम करता है, लेकिन यह किसी भी व्यक्ति के लिए इंटरैक्टिव रूप से डेटा के साथ काम करने की कोशिश करने के लिए घृणित है। यहां तक ​​कि जावास्क्रिप्ट चार्टिंग लाइब्रेरीज़ आमतौर पर एक स्कैटरशॉट पर बिंदु आकार बदलने के लिए स्टाइल शीट को अपडेट करने के लिए मजबूर नहीं करते हैं। –

4

मैं Styling charts with CSS पर और उस पृष्ठ Setting Chart Colors करने के लिए नीचे क्या आप विशेष रूप से देख रहे के लिए स्क्रॉल पर एक इस ओरेकल दस्तावेज़ पाया।

लाइनचार्टों के लिए रंग कैसे सेट करें?

इस के लिए सबसे आसान तरीका निम्नलिखित सीएसएस टुकड़ा है:

.default-color0.chart-series-line { -fx-stroke: #e9967a; } 
.default-color1.chart-series-line { -fx-stroke: #f0e68c; } 
.default-color2.chart-series-line { -fx-stroke: #dda0dd; } 

यह दुर्भाग्य आईडी या जो श्रृंखला के द्वारा काम नहीं करेगा, बल्कि आदेश श्रृंखला ग्राफ में रखा जाता है।

.chart-series-line {  
    -fx-stroke-width: 2px; 
    -fx-effect: null; 
} 

कैसे श्रृंखला के लिए एक सीएसएस वर्ग सेट करने के लिए: तुम भी, हालांकि द्वारा कर लाइन शैलियों सेट कर सकते हैं?

दुर्भाग्यवश मुझे ऐसा करने का कोई तरीका नहीं दिख रहा है। XYChart.Series नाम संपत्ति के आधार पर सीएसएस नियम बनाने में सक्षम होना अच्छा होगा, लेकिन मुझे नहीं लगता कि यह संभव है।

+0

धन्यवाद, मैं डिफ़ॉल्ट रंग बदलने के बारे में सोचा था, लेकिन मैं अक्षम/श्रृंखला सक्षम करने के लिए (उपयोगकर्ता/छिपाने दिखाने के लिए कार्यक्षमता होगी की आवश्यकता होगी श्रृंखला)। और इस तरह यह करने का सबसे अच्छा तरीका नहीं है। – Yurish

2

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

जब श्रृंखला बनाने, मैं एक श्रृंखला विशिष्ट शैली वर्ग जोड़ें:

:

 val s = new XYChart.Series[Number, Number]() //create a new series 
     s.setName(seriesName)       //set its name (display in legend) 
     s.getNode.getStyleClass.add("series-" + seriesName) //add specific style class 
फिर css -file मैं 'श्रृंखला butterwings' का भरण रंग बदलने के लिए निम्न उपाय अपनाते हैं अंदर

.series-butterwings *.chart-series-area-fill{ 
    -fx-fill: #aab597; 
} 

यह काम करता है, क्योंकि श्रृंखला क्षेत्र के लिए नोड श्रृंखला नोड से नीचे है (जो क्षेत्र चार्ट के मामले में एक समूह है)।

+0

मैंने ऐसा करने का प्रयास किया है लेकिन पाया कि मेरा प्रोग्राम 'एड' कॉल पर लटका हुआ है। किसी के पास एक समान अनुभव था? मैं इसे ScalaFx से कर रहा हूँ; पता नहीं है कि इससे कोई फर्क पड़ता है (हालांकि मैं रैपर की बजाय मूल जावाफैक्स विधियों को बुला रहा हूं)। – Luciano

5

लाइनचार्टों के लिए रंग कैसे सेट करें?

यहाँ करने के लिए एक आसान तरीका है AreaChart या लाइन चार्ट

XYChart chart = new AreaChart(); 
Series series = new Series(); 
chart.getData().add(series); 

Node fill = series.getNode().lookup(".chart-series-area-fill"); // only for AreaChart 
Node line = series.getNode().lookup(".chart-series-area-line"); 

Color color = Color.RED; // or any other color 

String rgb = String.format("%d, %d, %d", 
     (int) (color.getRed() * 255), 
     (int) (color.getGreen() * 255), 
     (int) (color.getBlue() * 255)); 

fill.setStyle("-fx-fill: rgba(" + rgb + ", 0.15);"); 
line.setStyle("-fx-stroke: rgba(" + rgb + ", 1.0);"); 
+1

मुझे इन पंक्तियों पर एक शून्य वापस मिल गया है: series.getNode()। लुकअप ("। चार्ट-श्रृंखला-क्षेत्र भरें"); श्रृंखला .getNode()। लुकअप ("चार्ट-श्रृंखला-क्षेत्र-रेखा"); मैं क्षेत्र चार्ट का उपयोग कर रहा हूं। – LordScone

+1

लाइन लाइन के लिए 'series.getNode()। लुकअप ("। चार्ट-श्रृंखला-रेखा") का प्रयास करें; '। – Pygmalion

+1

मैं उस श्रृंखला पर जोर देना चाहूंगा कि 'series.getNode()। लुकअप() को ** ** को चार्ट में श्रृंखला जोड़ने के बाद ** कहा जाना चाहिए, अन्यथा यह शून्य हो जाता है। –

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