jfreechart柱状图示例
Posted 小立攻城狮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jfreechart柱状图示例相关的知识,希望对你有一定的参考价值。
public static void main(String[] args)
//创建主题样式 ,以下代码用于解决中文乱码问题
StandardChartTheme standardChartTheme=new StandardChartTheme("CN");
//设置标题字体
standardChartTheme.setExtraLargeFont(new Font("宋体",Font.BOLD,20));
//设置图例的字体
standardChartTheme.setRegularFont(new Font("宋体",Font.PLAIN,15));
//设置轴向的字体
standardChartTheme.setLargeFont(new Font("宋体",Font.PLAIN,15));
//应用主题样式
ChartFactory.setChartTheme(standardChartTheme);
//数据源
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(510, "22", "苹果");
dataset.addValue(320, "45", "香蕉");
dataset.addValue(580, "31", "橘子");
dataset.addValue(390, "12", "梨子");
//创建图
JFreeChart chart = ChartFactory.createBarChart3D("数量统计图",
null,
null,
dataset,
PlotOrientation.VERTICAL,
false,
false,
false);
CategoryPlot plot=(CategoryPlot)chart.getPlot();
//x轴
CategoryAxis categoryAxis=plot.getDomainAxis();
//分类标签以45度倾斜
categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
//设置画布颜色为白色
plot.setBackgroundPaint(SystemColor.WHITE);
//设置水平方向背景线颜色
plot.setRangeGridlinePaint(Color.gray);
//设置是否显示水平方向背景线,默认值为true
plot.setRangeGridlinesVisible(true);
//设置垂直方向背景线颜色
plot.setDomainGridlinePaint(Color.gray);
//设置是否显示垂直方向背景线,默认值为true
plot.setDomainGridlinesVisible(true);
// 设置柱的透明度
plot.setForegroundAlpha(0.7f);
ValueAxis rangeAxis = plot.getRangeAxis();
//设置最高的一个柱与图片顶端的距离,以保证柱子上方的数值能展示出来
rangeAxis.setUpperMargin(0.15);
BarRenderer3D barRender=(BarRenderer3D)plot.getRenderer();
//设置柱子的最大宽度
barRender.setMaximumBarWidth(0.04);
//设置柱子直接的间距
barRender.setItemMargin(0.000000005);
//显示每个柱的数值
barRender.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
barRender.setBaseItemLabelsVisible(true);
//设置柱子数值label显示位置
barRender.setBasePositiveItemLabelPosition(new ItemLabelPosition(
ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));
// 设置柱形图上的文字偏离值
barRender.setItemLabelAnchorOffset(10D);
//最短的BAR长度,避免数值太小而显示不出
barRender.setMinimumBarLength(0.5);
//设置柱子的随机颜色
for (int k = 0; k < barRender.getColumnCount(); k++)
barRender.setSeriesPaint(k, getRandomColor());
//设置边框为黑色
barRender.setSeriesOutlinePaint(k,Color.BLACK);
ChartFrame chartFrame=new ChartFrame("数量统计图",chart);
//以合适的大小展现图形
chartFrame.pack();
//图形是否可见
chartFrame.setVisible(true);
private static Color getRandomColor()
Color color = new Color(
(new Double(Math.random() * 128)).intValue() + 128,
(new Double(Math.random() * 128)).intValue() + 128,
(new Double(Math.random() * 128)).intValue() + 128);
return color;
效果图如下:
以上是关于jfreechart柱状图示例的主要内容,如果未能解决你的问题,请参考以下文章
你的柱状图(JFreeChart)为啥每根柱子的颜色都不一样,怎么做到的????