2014-11-19 15 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 Forums] (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 примеры круговых диаграмм и написать SPECIFIC описание проблемы на форумах JFreeChart (или здесь, если хотите).

+0

Я создал свой собственный набор данных, так как вы его не предоставили. – hfontanez

+0

@Ammi, если этот ответ удовлетворил ваш вопрос, отметьте его как таковой. – hfontanez

+0

эй спасибо за ответ, мой вопрос был как при создании графика, мы должны указать ширину и высоту графика, а в наборе данных, если у нас слишком длинное имя для определенного значения, тогда в этом случае легенды занимают слишком много места для отображения имени , в этом размере диаграммы получает descrease, в короткой области участка varing согласно легендам (ключ, используемый для значения) – Ammi