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 dataset1 = new DefaultCategoryDataset();
dataset1.addValue(800, "黄瓜君(数量)", "1月");
dataset1.addValue(600, "黄瓜君(数量)", "2月");
dataset1.addValue(200, "黄瓜君(数量)", "3月");
//百分比数据源
DefaultCategoryDataset dataset2 = new DefaultCategoryDataset();
dataset2.addValue(0.2, "黄瓜君(销量)", "1月");
dataset2.addValue(0.35, "黄瓜君(销量)", "2月");
dataset2.addValue(0.8, "黄瓜君(销量)", "3月");
//创建图
JFreeChart chart = ChartFactory.createLineChart("数量/销量走势图",
null,
null,
dataset1,
PlotOrientation.VERTICAL,
true,
true,
false);
CategoryPlot plot = chart.getCategoryPlot();
//设置数据源dataset2
plot.setDataset(1, dataset2);
if (dataset1.getColumnCount() > 0 && dataset2.getColumnCount() > 0)
// 设置Y轴右侧刻度
plot.setRangeAxis(1, new NumberAxis());
// 设置数据源dataset2应用Y轴右侧刻度
plot.mapDatasetToRangeAxis(1, 1);
//设置画布颜色为白色
plot.setBackgroundPaint(SystemColor.WHITE);
//设置水平方向背景线颜色
plot.setRangeGridlinePaint(Color.gray);
//设置是否显示水平方向背景线,默认值为true
plot.setRangeGridlinesVisible(true);
//设置垂直方向背景线颜色
plot.setDomainGridlinePaint(Color.gray);
//设置是否显示垂直方向背景线,默认值为true
plot.setDomainGridlinesVisible(true);
plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);
for (int i = 0; i < plot.getDatasetCount(); i++)
LineAndShapeRenderer lineRender = new LineAndShapeRenderer();
lineRender.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());
BasicStroke brokenLine = new BasicStroke(2f, //线条粗细
BasicStroke.CAP_SQUARE, //端点风格
BasicStroke.JOIN_MITER, //折点风格
8.f, //折点处理办法
new float[]8.0f , //虚线数组
0.0f);
lineRender.setSeriesStroke(0,brokenLine);
plot.setRenderer(i, lineRender);
//展示折线图节点值
lineRender.setBaseItemLabelsVisible(true);
lineRender.setBasePositiveItemLabelPosition(
new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));
lineRender.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
for (int i = 0; i < plot.getRangeAxisCount(); i++)
ValueAxis rangeAxis = plot.getRangeAxis(i);
// 设置最高的一个 Item 与图片顶端的距离
rangeAxis.setUpperMargin(0.15);
// 设置最低的一个 Item 与图片底端的距离
rangeAxis.setLowerMargin(0.25);
ChartFrame chartFrame=new ChartFrame("销量走势图",chart);
//以合适的大小展现图形
chartFrame.pack();
//图形是否可见
chartFrame.setVisible(true);
效果图如下:
以上是关于jfreechart折线图示例的主要内容,如果未能解决你的问题,请参考以下文章