package com.kd.proxy.page.project.data;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.Window;
import java.text.DecimalFormat;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
import org.jfree.chart.ChartColor;
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.NumberAxis;
import org.jfree.chart.axis.NumberTickUnit;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.StandardBarPainter;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.RectangleInsets;
public class ProxyInterviewData {
public static JFreeChart chart = null;
static CategoryPlot cateplot = null;
/**
*
*
* @author yangl
* @return
*/
public JPanel getProxyInterviewDataPanel(){
CategoryDataset dataset = getProxyInterviewData();
chart = ChartFactory.createBarChart("代理访问监视",// 图标的标题
null,//目录轴的显示标签
null, //数据轴的显示标签
dataset, //数据集
PlotOrientation.VERTICAL,//图标方向:水平和垂直
true,// 是否显示图例(对于简单的柱状图必须是false)
false,//是否生成工具
false);//是否生成URL链接
chart.setBackgroundPaint(ChartColor.white);
cateplot = (CategoryPlot) chart.getPlot();
// CategoryPlot plot = chart.getCategoryPlot();//获取图表对象
NumberAxis numAxis = (NumberAxis) cateplot.getRangeAxis();
// numAxis.setVisible(false);
numAxis.setAxisLineVisible(true);//Y轴竖线是否显示
//设置最高的一个 Item 与图片顶端的距离 (在设置rAxis.setRange(100, 600);情况下不起作用)
numAxis.setUpperMargin(0.2);
//设置最低的一个 Item 与图片底端的距离
numAxis.setLowerMargin(0.15);
numAxis.setAutoRange(true);//是否自动适应范围
// numAxis.setLabel("实时访问数");//Y轴内容
numAxis.setTickLabelsVisible(true);
DecimalFormat df = new DecimalFormat("0");
numAxis.setNumberFormatOverride(df); // 数据轴数据标签的显示格式
// 只显示整数值
numAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
numAxis.setLowerBound(0);
numAxis.setUpperBound(500);
numAxis.setTickUnit(new NumberTickUnit(500d));
// numAxis.setLabelInsets(new RectangleInsets(0, 0, 0, 0));
numAxis.setLabelAngle(1.6);//标题内容显示角度(1.6时候水平)
numAxis.setLabelPaint(Color.black);//标题内容颜色
numAxis.setMinorTickMarksVisible(false);//标记线是否显示
numAxis.setMinorTickCount(7);//节段中的刻度数
// numAxis.setMinorTickMarkInsideLength(3);//内刻度线向内长度
// numAxis.setMinorTickMarkOutsideLength(3);//内刻度记线向外长度
numAxis.setTickMarkInsideLength(0);//外刻度线向内长度
numAxis.setTickMarkOutsideLength(0);
// numAxis.setTickMarkPaint(Color.white);//刻度线颜色
numAxis.setTickLabelsVisible(true);//刻度数值是否显示
numAxis.setStandardTickUnits(numAxis.createIntegerTickUnits());
// // 设置上部空白
numAxis.setUpperMargin(0.15);
CategoryAxis domainAxis = cateplot.getDomainAxis();//水平底部列表
domainAxis.setLabelFont(new Font("宋体", Font.BOLD, 14));//水平底部标题
domainAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 14));//垂直标题
domainAxis.setVisible(true);
domainAxis.setLabel("代理节点");
domainAxis.setTickMarksVisible(false);//标记线是否显示
domainAxis.setTickMarkOutsideLength(3);//标记线向外长度
domainAxis.setTickMarkInsideLength(3);//标记线向内长度
domainAxis.setAxisLineVisible(true);//X轴竖线是否显示
domainAxis.setTickMarkPaint(Color.red);//标记线颜色
domainAxis.setAxisLinePaint(Color.black);//X轴的颜色
domainAxis.setUpperMargin(0.2);//设置距离图片左端距离
domainAxis.setLowerMargin(0.2); //设置距离图片右端距离
//横轴上的 Lable 是否完整显示
domainAxis.setMaximumCategoryLabelWidthRatio(1f);
//横轴上的 Lable 45度倾斜
// domainAxis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_45);
domainAxis.setMaximumCategoryLabelLines(10); //标题行数,每个字显示一行
domainAxis.setMaximumCategoryLabelWidthRatio(0.5f); //每个标题宽度,控制为1个字的宽度
ValueAxis rangeAxis = cateplot.getRangeAxis();//获取柱状
rangeAxis.setLabelFont(new Font("宋体", Font.BOLD, 14));
chart.getTitle().setFont(new Font("微软雅黑", 0, 16));//设置标题字体
chart.getTitle().setPaint(new Color(00,66,00));
BarRenderer renderer = new BarRenderer();//柱状呈现器
renderer.setBarPainter(new StandardBarPainter());//取消渐变
renderer.setBaseItemLabelsVisible(true, true);
renderer.setIncludeBaseInRange(true);//显示每个柱的数字
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
// renderer.setBaseItemLabelGenerator((CategoryItemLabelGenerator) new StandardXYItemLabelGenerator());
renderer.setSeriesItemLabelsVisible(0, true);
renderer.setBaseOutlinePaint(ChartColor.black);//设置柱子边框的颜色
renderer.setDrawBarOutline(true);// 设置柱子边框可见
renderer.setSeriesPaint(0,new ChartColor(0,255,0));//设置第一个柱状的颜色
renderer.setSeriesPaint(1,new ChartColor(0,0,255));//设置第二个柱状的颜色
// 设置每个地区所包含的平行柱的之间距离,数值越大则间隔越大,图片大小一定的情况下会影响柱子的宽度,可以为负数
renderer.setItemMargin(0.01);//组内柱子间隔为组宽的5%
renderer.setMaximumBarWidth(0.1);//设置条形柱最大宽度
renderer.setShadowVisible(false);//不显示阴影
cateplot.setRenderer(renderer);//给柱图添加呈现器
cateplot.setBackgroundAlpha(0.0f);//去掉柱状图的背景色
cateplot.setOutlinePaint(null);//去掉边框
// chart.setPreferredSize(preferredSize);
// LegendTitle legend = new LegendTitle(chart);//创建图表的边框
// legend.setBorder(top, left, bottom, right);//边框距离图表的位置
// chart.addLegend(legend);//图表中添加图例
RectangleInsets offset = new RectangleInsets(0, 0, 0, 0);
cateplot.setAxisOffset(offset);//坐标轴到数据区的间距
// cateplot.setRangeAxis(null);
// chart.setBorderVisible(true);
//CategoryAxis中还有刻度标识间距设置,(最小间距,最大间距)
CategoryAxis caxis = cateplot.getDomainAxis();
// 设置图形右边的空白
caxis.setUpperMargin(0.05);
// 设置左边的空白
caxis.setLowerMargin(0.05);
// caxis.setTickLabelsVisible(false);//是否显示列的key值
cateplot.setDomainAxis(caxis);
//valueAxis对象可进行的操作有:轴端的设置,范围的设置,间隔的设置等
ValueAxis valueAxis = cateplot.getRangeAxis();
// valueAxis.setAutoRangeMinimumSize(10);
ChartPanel chartPanel = new ChartPanel(chart,true);
return chartPanel;
}
/**
*
*
*
* @author yangl
* @return
*/
private static CategoryDataset getProxyInterviewData(){
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(new Random().nextInt(500), "001", "ssg-pc01");
dataset.addValue(new Random().nextInt(500), "002", "ssg-pc01");
dataset.addValue(new Random().nextInt(500), "001", "ssg-pc02");
dataset.addValue(new Random().nextInt(500), "002", "ssg-pc02");
return dataset;
}
public static void main(String[] args) {
int i = 0;
JFrame frame = new JFrame();
ProxyInterviewData proxy = new ProxyInterviewData();
Container content = frame.getContentPane();
content.add(proxy.getProxyInterviewDataPanel());
frame.setVisible(true);
frame.setSize(800, 600);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Thread thread = n
JFreeChart动态加载柱状图
需积分: 41 192 浏览量
2017-09-09
22:30:38
上传
评论
收藏 1.75MB RAR 举报
独孤战天斗神
- 粉丝: 39
- 资源: 1
最新资源
- 基于STM32F1和TB6612芯片的电机驱动板,可以驱动两个电机正反转,具有比L298N更小的体积源码+文档说明
- 基于Javascript的CNN卷积交互式播放器设计源码
- 基于Layui的树表格(treeGrid)前端设计源码
- 基于Vue框架的Node+Vue茶叶商城设计源码
- 基于HTML的响应式网站设计源码
- 基于Python的CNN医学图像分割设计源码
- jjcbbdnfiapchhkemifphepfgilhdokf_4.5.6_chrome.zzzmh.cn.crx
- Screenshot_20240418_234552.jpg
- Screenshot_20240418_234558.jpg
- 基本组件.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈