2013-03-28 4 views
1

Je travaille avec jfreechart et essaie de créer un XYLineChart qui fonctionne très bien.JFreeChart XYSeries as Strings

Mon problème est que l'étiquette y est double et j'ai besoin de chaînes.

Mon code:

DefaultXYDataset result = new DefaultXYDataset(); 

XYSeries series1 = new XYSeries("Words"); 
series1.add(0, 0.3); 
series1.add(1, 0.5); 
series1.add(2, 0.6); 
series1.add(3, 0.3); 
series1.add(4, 0.2); 
series1.add(5, 1);     
result.addSeries(getTitle(), series1.toArray()); 

Je veux quelque chose comme:

XYSeries series1 = new XYSeries("Words"); 
series1.add("word 1", 0.3); 
series1.add("word 2", 0.5); 
... 

Le code mis à jour en utilisant l'axe Symbole:

private void test2() { 
    XYDataset dataset = createDataset2(); 

    JFreeChart chart = createChart2(dataset, "NN"); 

    ChartPanel chartPanel = new ChartPanel(chart); 

    chartPanel.setPreferredSize(new java.awt.Dimension(500, 250)); 

    panel_visualize.add(chartPanel); 
} 


private DefaultXYDataset createDataset2() 
{ 
    DefaultXYDataset result = new DefaultXYDataset(); 

    XYSeries series1 = new XYSeries("Words");  

    series1.add(0.3, 0); 
    series1.add(0.5, 1); 
    series1.add(0.6, 2); 
    series1.add(0.3, 3); 
    series1.add(0.2, 4);  

    result.addSeries(getTitle(), series1.toArray()); 

    return result; 
} 


private JFreeChart createChart2(XYDataset dataset, String title) 
{  

    JFreeChart chart = ChartFactory.createXYLineChart(title,   // chart title 
     "Words", 
     "Activation", 
     dataset,    // data 
     PlotOrientation.HORIZONTAL, 
     true,     // include legend 
     true, 
     false); 


    XYPlot plot = (XYPlot) chart.getPlot(); 
    plot.setForegroundAlpha(0.5f); 


    String[] grade = new String[5]; 
    grade[0] = "Temp 0"; 
    grade[1] = "Temp 1"; 
    grade[2] = "Temp 2"; 
    grade[3] = "Temp 3"; 
    grade[4] = "Temp 4"; 
    SymbolAxis rangeAxis = new SymbolAxis("Words", grade); 

    rangeAxis.setTickUnit(new NumberTickUnit(1)); 
    rangeAxis.setRange(0,grade.length); 
    plot.setRangeAxis(rangeAxis); 

    return chart; 
} 
+1

Peut-être 'SymbolAxis', vu [ici] (http://stackoverflow.com/a/12839170/230513). – trashgod

+0

Merci pour la réponse. Est-il possible d'étiqueter les axes y avec des chaînes – hehe

+0

Cela dépend de la façon dont vous créez le graphique. Veuillez éditer votre question pour inclure un [sscce] (http://sscce.org/). – trashgod

Répondre

1

utilisant:

plot.setDomainAxis(rangeAxis); 

résout mon problème.

Merci à trashgod pour l'aide.