2014-11-19 4 views
0

jFreeChart를 사용하고 있으며 범례가있는 원형 차트를 플로팅하고 있습니다. 파이의 반경은 전설에 따라 다릅니다, 그래서 내가 (플롯 영역)JfreeChart가 원형 차트 반경을 수정했습니다.

RingPlot plot = new RingPlot(dataset); 
StringBuffer chartFileName = new StringBuffer(Integer.toString(generatedCharts)).append(Long.toString(System.currentTimeMillis())).append(".png"); 

JFreeChart chart = new JFreeChart("", JFreeChart.DEFAULT_TITLE_FONT, plot, true); 
chart.setBackgroundPaint(new GradientPaint(new Point(0, 0), new Color(20, 20, 20), new Point(400, 200), Color.DARK_GRAY)); 

TextTitle t = chart.getTitle(); 
t.setHorizontalAlignment(org.jfree.ui.HorizontalAlignment.LEFT); 
t.setPaint(new Color(240, 240, 240)); 
t.setFont(new Font("Arial", Font.BOLD, 26)); 

plot.setBackgroundPaint(null); 
plot.setOutlineVisible(false); 
plot.setLabelGenerator(null); 
plot.setSectionDepth(0.35); 
plot.setSectionOutlinesVisible(false); 
plot.setSimpleLabels(true); 
plot.setShadowPaint(null); 
plot.setOuterSeparatorExtension(0); 
plot.setInnerSeparatorExtension(0); 
plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{1}",new DecimalFormat("#,##0"), new DecimalFormat("0.000%"))); 
plot.setLabelBackgroundPaint(null); 
plot.setLabelOutlinePaint(null); 

Font font=new Font("",0,16); 
plot.setLabelFont(font); 

chart.getLegend().setFrame(BlockBorder.NONE); 
chart.getLegend().setPosition(RectangleEdge.BOTTOM); 
chart.setBackgroundPaint(java.awt.Color.white); 
chart.setPadding(new RectangleInsets(4, 8, 2, 2)); 
+0

SO 계정을 열 때 규칙을 읽었습니까? 질문과 관련된 코드가없는 경우 도대체 어떻게 도와 줄 수 있습니까? 또한 [JFreeChart 포럼] (http://www.jfree.org/forum/viewforum.php?f=3&sid=3c0597200f771c6e2829bed40173fb4c)에서 답변을 확인해 주셨습니까? 그들은 거기에도 많은 질문을 대답합니다. – hfontanez

+0

문제를 더 잘 설명하십시오. "원형 차트 (플롯 영역)의 크기를 수정하고 싶습니다"라는 의미는 무엇입니까? 그게 정확히 무슨 뜻입니까? – hfontanez

+0

또한,'dataset'과'generatedCharts'가 적절하게 정의되지 않았습니다. 완전한 코드를 추가하십시오. – hfontanez

답변

3

내가 ApplicationFrame에 코드를 추가 할 수 있었고, 난이있어 파이 차트의 크기를 수정하려면 :

enter image description here

  1. 사용하는 대신 직접 생성자를 호출의 공장 :

    나는 몇 가지 관찰을해야합니까. 예를 들어, "파이 차트"는 실제로 "벨소리 차트"입니다. 다른 유형이나 차트를 만드는 편리한 방법이 있습니다. 예 : JFreeChart chart = ChartFactory.createRingChart(...);.

  2. setInteriorGap(), setLabelGap(), setLabelLinkMargin() 및/또는 setMaximumLabelWidth() 중 일부 또는 전부를 사용하여 파이의 크기를 조정할 수 있습니다. 당신이 원하는 모든 차트의 반경을 변경하는 경우
  3. , 당신에 다음 코드를 추가

    public static void setPieRadius(JFreeChart chart, double radius) 
    { 
        if (chart != null) 
        { 
         Plot plot = chart.getPlot(); 
         if (plot instanceof PiePlot) 
         { 
          PiePlot piePlot = (PiePlot) plot; 
          double ig = 1.0 - radius; 
          if (ig > PiePlot.MAX_INTERIOR_GAP) 
          { 
           ig = PiePlot.MAX_INTERIOR_GAP; 
          } 
          piePlot.setInteriorGap(ig); 
         } 
        } 
    } 
    

난 여전히 당신의 질문이 무엇인지 모르겠습니다. JFreeChart 원형 차트 예제를 얻고 SPYIFICIC 문제 설명을 JFreeChart 포럼 (또는 원하는 경우 여기)에 게시하십시오.

+0

내가 제공 한 데이터 세트를 제공하지 않았기 때문에 자체 데이터 세트를 만들었습니다. – hfontanez

+0

@Ammi이 답변이 귀하의 질문에 만족하면 그 것으로 표시해주십시오. – hfontanez

+0

헤이 해답을 주셔서 감사합니다, 내 질문에 차트를 만드는 동안 우리는 차트의 너비와 높이를 지정해야했고 데이터 세트에서 우리가 특정 값에 대해 너무 긴 이름을 가지고 있다면, 그 경우 범례는 이름을 표시하기에는 너무 많은 공간을 차지합니다. , 그 차트의 크기가 감소하고 있습니다, 짧은 음모 영역은 전설에 따라 varing입니다 (값에 사용되는 열쇠) – Ammi