2016-06-06 6 views
1

Ich habe ein 3DPieChart deklariert, und ich möchte seinen Hintergrund/Transparenz ändern. In diesem Fall, unter "Hintergrund" verstehe ich diesen Leerraum.Wie ändere ich den Hintergrund/die Transparenz eines 3dPieChart (JFreeChart API)?

enter image description here

Hier ist die Funktion, die diese Grafik implementiert, wenn es irgendwie nützlich ist.

//customize panel for visualising the statistics 
    public void customizeStatisticsPanelWhenButtoninIsPressed() 
    { 
    transactionsCenterFinalPanel.setLayout(new BorderLayout()); 
    //center side of then main panel 
    JPanel statisticsPanelCenter = new JPanel(); 
    statisticsPanelCenter.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED)); 

    //create a dataset  
    DefaultPieDataset pieDataSet = new DefaultPieDataset(); 

    //add values to dataset 
    pieDataSet.setValue("Deposit:", depositCount); 
    pieDataSet.setValue("Withdraw:", withdrawCount); 
    pieDataSet.setValue("Transfer:", transferCount); 

    //create a 3D chart with the given title that appears above the chart 
    JFreeChart chart = ChartFactory.createPieChart3D(" ", pieDataSet, true, false, true); 
    final ChartPanel chartPanel = new ChartPanel(chart); 
    chartPanel.setPreferredSize(new Dimension(315, 195)); 
    chartPanel.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED)); 

    //declare a pieplot so we can customize the chart 
    PiePlot3D plot = (PiePlot3D) chart.getPlot(); 
    plot.setInsets(new RectangleInsets(-6.0, 5.0, 5.0, 5.0)); 
    plot.setDirection(Rotation.CLOCKWISE); 
    plot.setIgnoreZeroValues(true); 

    plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0} {1} ({2})")); 
    plot.setDepthFactor(0.1); 
    plot.setCircular(true); 
    plot.setDarkerSides(true); 

    //create a timer for animation 
    rotate3DPieChart = new Timer(150, new ActionListener() 
    { 
     public void actionPerformed(ActionEvent ae) 
     { 
      //set the start angle, this increases everytime timer is executed 
      plot.setStartAngle(pieChartThreadIterator = pieChartThreadIterator + 0.6);    
     } 
    }); 

    //south side 
    JPanel statisticsPanelSouth = new JPanel(); 
    statisticsPanelSouth.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED)); 

    JButton transactionsCount = new JButton("Count"); 
    statisticsPanelSouth.add(transactionsCount); 
    transactionsCenterFinalPanel.add(chartPanel, BorderLayout.CENTER); 
    transactionsCenterFinalPanel.add(statisticsPanelSouth, BorderLayout.SOUTH); 

    transactions.add(transactionsCenterFinalPanel, BorderLayout.CENTER); 

    //start the timer (animation starts!) 
    rotate3DPieChart.start(); 

    revalidate(); 
} 

Hinweis: ein Diagramm für das Diagramm verwenden, dann setzen plot.setBackgroundPaint (Color.GRAY) tut nicht gut. Es ändert nur den Hintergrund innerhalb des Umrisses. Ich will, dass alles grau ist. Wie kann ich das machen ?

Antwort

1

Der weiße Bereich um das Diagramm in Ihrem Beispiel ist der Hintergrund des Diagramms. Sie können ein Bild und/oder eine durchscheinende Farbe wie unten gezeigt einstellen. Das ansonsten graue Bild ist mit einem 50% transparenten Gelb getönt.

image

JFreeChart pieChart = ChartFactory.createPieChart3D(…); 
try {//https://www.pinterest.com/pin/79516749641165970/ 
    pieChart.setBackgroundImage(ImageIO.read(new URL(
     "https://s-media-cache-ak0.pinimg.com/736x/bb/bf/bf/bbbfbfd869f20db50d3dd4943790020f.jpg"))); 
} catch (IOException ex) { 
    ex.printStackTrace(System.err); 
} 
pieChart.setBackgroundPaint(new Color(0x7fffff00, true)); 

Eine etwas andere Wirkung kann unter Verwendung von setBackgroundImageAlpha() erreicht werden.

image

pieChart.setBackgroundPaint(Color.yellow); 
pieChart.setBackgroundImageAlpha(0.5f); 
+1

Es funktioniert völlig in Ordnung. Ich werde das stattdessen verwenden. Vielen Dank ! – miTzuliK

+0

Noch eine Frage, wenn ich darf: Mit welcher Funktion haben Sie Dezimalzahlen der Zahl (84,67%) innerhalb von Etiketten angezeigt? – miTzuliK

+0

@miTzuliK: Es sieht aus wie die verirrte Tooltip, aktiviert durch werkseitige Einstellung von 'tooltips' auf' true'; Hier ist das [Original] (http://stackoverflow.com/a/36889641/230513). – trashgod

Verwandte Themen