2016-05-13 12 views
3

enter image description hereJFreeChartラベルの幅

私はJFreeChartを初めて使っています。

マイチャートが添付されています。ご覧のとおり、ラベルは切り捨てられています。切り詰めを避けるためにラベルの幅を指定するにはどうすればよいですか(私はそれらを収めるのに十分な不動産を持っています)?次のように

私の現在のコードがある:アプローチのうち

DefaultCategoryDataset dataset = new DefaultCategoryDataset(); 

    dataset.setValue(24, "Major", "Mathematics"); 
    dataset.setValue(20, "Major", "Philosophy"); 
    dataset.setValue(18, "Major", "Chemical Engineering"); 
    dataset.setValue(15, "Major", "Sociology"); 
    dataset.setValue(14, "Major", "Stuff"); 
    dataset.setValue(13, "Major", "A Program"); 
    dataset.setValue(13, "Major", "Bleg"); 

    JFreeChart chart = ChartFactory.createBarChart(" ", "Major", "Score", dataset, PlotOrientation.HORIZONTAL, 
      false, true, false); 
    CategoryPlot plot = chart.getCategoryPlot(); 

    Font font1 = new Font("Dialog", Font.PLAIN, 25); 
    Font font2 = new Font("Dialog", Font.PLAIN, 15); 
    Font font3 = new Font("Dialog", Font.PLAIN, 25); 

    plot.getDomainAxis().setLabelFont(font3); 
    plot.getRangeAxis().setLabelFont(font3); 

    CategoryAxis axisDomain = plot.getDomainAxis(); 
    ValueAxis axisRange = plot.getRangeAxis(); 

    axisDomain.setTickLabelFont(font1); 

    axisRange.setTickLabelFont(font2); 
    chart.setAntiAlias(true); 

答えて

3

here提案、以下の例では、getPreferredSize()を上書き。

image

import java.awt.Dimension; 
import java.awt.EventQueue; 
import java.awt.Font; 
import javax.swing.JFrame; 
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.ChartPanel; 
import org.jfree.chart.JFreeChart; 
import org.jfree.chart.axis.CategoryAxis; 
import org.jfree.chart.axis.ValueAxis; 
import org.jfree.chart.plot.CategoryPlot; 
import org.jfree.chart.plot.PlotOrientation; 
import org.jfree.data.category.DefaultCategoryDataset; 

/** 
* @see https://stackoverflow.com/a/37216788/230513 
*/ 
public class Test { 

    private void display() { 
     JFrame f = new JFrame("Test"); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     DefaultCategoryDataset dataset = new DefaultCategoryDataset(); 
     dataset.setValue(24, "Major", "Mathematics"); 
     dataset.setValue(20, "Major", "Philosophy"); 
     dataset.setValue(18, "Major", "Chemical Engineering"); 
     dataset.setValue(15, "Major", "Sociology"); 
     dataset.setValue(14, "Major", "Stuff"); 
     dataset.setValue(13, "Major", "A Program"); 
     dataset.setValue(13, "Major", "Bleg"); 
     JFreeChart chart = ChartFactory.createBarChart("Title", "Major", "Score", 
      dataset, PlotOrientation.HORIZONTAL, false, true, false); 
     CategoryPlot plot = chart.getCategoryPlot(); 
     Font font1 = new Font("Dialog", Font.PLAIN, 25); 
     Font font2 = new Font("Dialog", Font.PLAIN, 15); 
     Font font3 = new Font("Dialog", Font.PLAIN, 25); 
     plot.getDomainAxis().setLabelFont(font3); 
     plot.getRangeAxis().setLabelFont(font3); 
     CategoryAxis axisDomain = plot.getDomainAxis(); 
     axisDomain.setTickLabelFont(font1); 
     ValueAxis axisRange = plot.getRangeAxis(); 
     axisRange.setTickLabelFont(font2); 
     chart.setAntiAlias(true); 
     f.add(new ChartPanel(chart){ 
      @Override 
      public Dimension getPreferredSize() { 
       return new Dimension(1024, 512); 
      } 
     }); 
     f.pack(); 
     f.setLocationRelativeTo(null); 
     f.setVisible(true); 
    } 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Test()::display); 
    } 
} 
+1

ありがとう!!!!! あなたはこのような信じられないほど明確な答えに対して+10以上の価値があります。 – Jake

関連する問題