use of org.jCharts.axisChart.AxisChart in project jmeter by apache.
the class AxisGraph method drawSample.
private void drawSample(String _title, int _maxLength, String[] _xAxisLabels, String _yAxisTitle, String[] _legendLabels, double[][] _data, int _width, int _height, Color[] _color, Font legendFont, Graphics g) {
// define max scale y axis
double max = maxYAxisScale > 0 ? maxYAxisScale : findMax(_data);
try {
/** These controls are already done in StatGraphVisualizer
if (_width == 0) {
_width = 450;
}
if (_height == 0) {
_height = 250;
}
**/
if (_maxLength < 3) {
_maxLength = 3;
}
// if the "Title of Graph" is empty, we can assume some default
if (_title.length() == 0) {
//$NON-NLS-1$
_title = JMeterUtils.getResString("aggregate_graph_title");
}
// if the labels are too long, they'll be "squeezed" to make the chart viewable.
for (int i = 0; i < _xAxisLabels.length; i++) {
String label = _xAxisLabels[i];
_xAxisLabels[i] = squeeze(label, _maxLength);
}
this.setPreferredSize(new Dimension(_width, _height));
// replace _xAxisTitle to null (don't display x axis title)
DataSeries dataSeries = new DataSeries(_xAxisLabels, null, _yAxisTitle, _title);
ClusteredBarChartProperties clusteredBarChartProperties = new ClusteredBarChartProperties();
clusteredBarChartProperties.setShowOutlinesFlag(outlinesBarFlag);
ValueLabelRenderer valueLabelRenderer = new ValueLabelRenderer(false, false, showGrouping, 0);
valueLabelRenderer.setValueLabelPosition(ValueLabelPosition.AT_TOP);
valueLabelRenderer.setValueChartFont(new ChartFont(valueFont, foreColor));
valueLabelRenderer.useVerticalLabels(valueOrientation);
clusteredBarChartProperties.addPostRenderEventListener(valueLabelRenderer);
Paint[] paints = new Paint[_color.length];
System.arraycopy(_color, 0, paints, 0, paints.length);
AxisChartDataSet axisChartDataSet = new AxisChartDataSet(_data, _legendLabels, paints, ChartType.BAR_CLUSTERED, clusteredBarChartProperties);
dataSeries.addIAxisPlotDataSet(axisChartDataSet);
ChartProperties chartProperties = new ChartProperties();
LabelAxisProperties xaxis = new LabelAxisProperties();
DataAxisProperties yaxis = new DataAxisProperties();
yaxis.setUseCommas(showGrouping);
if (legendFont != null) {
yaxis.setAxisTitleChartFont(new ChartFont(legendFont, new Color(20)));
yaxis.setScaleChartFont(new ChartFont(legendFont, new Color(20)));
xaxis.setAxisTitleChartFont(new ChartFont(legendFont, new Color(20)));
xaxis.setScaleChartFont(new ChartFont(legendFont, new Color(20)));
}
if (titleFont != null) {
chartProperties.setTitleFont(new ChartFont(titleFont, new Color(0)));
}
// Y Axis
try {
BigDecimal round = BigDecimal.valueOf(max / 1000d);
round = round.setScale(0, BigDecimal.ROUND_UP);
double topValue = round.doubleValue() * 1000;
yaxis.setUserDefinedScale(0, 500);
yaxis.setNumItems((int) (topValue / 500) + 1);
yaxis.setShowGridLines(1);
} catch (PropertyException e) {
log.warn("Chart property exception occurred.", e);
}
AxisProperties axisProperties = new AxisProperties(xaxis, yaxis);
axisProperties.setXAxisLabelsAreVertical(true);
LegendProperties legendProperties = new LegendProperties();
legendProperties.setBorderStroke(null);
legendProperties.setPlacement(legendPlacement);
legendProperties.setIconBorderPaint(Color.WHITE);
if (legendPlacement == LegendAreaProperties.RIGHT || legendPlacement == LegendAreaProperties.LEFT) {
legendProperties.setNumColumns(1);
}
if (legendFont != null) {
//new Font("SansSerif", Font.PLAIN, 10)
legendProperties.setFont(legendFont);
}
AxisChart axisChart = new AxisChart(dataSeries, chartProperties, axisProperties, legendProperties, _width, _height);
axisChart.setGraphics2D((Graphics2D) g);
axisChart.render();
} catch (ChartDataException | PropertyException e) {
log.warn("Exception occurred while rendering chart.", e);
}
}
use of org.jCharts.axisChart.AxisChart in project jmeter by apache.
the class RespTimeGraphChart method drawSample.
private void drawSample(String _title, String[] _xAxisLabels, String _yAxisTitle, String[] _legendLabels, double[][] _data, int _width, int _height, int _incrScaleYAxis, Color[] _color, Font legendFont, Graphics g) {
// define max scale y axis
double max = maxYAxisScale > 0 ? maxYAxisScale : getTopValue(findMax(_data), BigDecimal.ROUND_UP);
try {
// if the title graph is empty, we can assume some default
if (_title.length() == 0) {
//$NON-NLS-1$
_title = JMeterUtils.getResString("graph_resp_time_title");
}
this.setPreferredSize(new Dimension(_width, _height));
// replace _xAxisTitle to null (don't display x axis title)
DataSeries dataSeries = new DataSeries(_xAxisLabels, null, _yAxisTitle, _title);
// Stroke and shape line settings
Stroke[] strokes = new Stroke[_legendLabels.length];
for (int i = 0; i < _legendLabels.length; i++) {
strokes[i] = new BasicStroke(strokeWidth, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 5f);
}
Shape[] shapes = new Shape[_legendLabels.length];
for (int i = 0; i < _legendLabels.length; i++) {
shapes[i] = pointShape;
}
LineChartProperties lineChartProperties = new LineChartProperties(strokes, shapes);
// Lines colors
Paint[] paints = new Paint[_color.length];
System.arraycopy(_color, 0, paints, 0, _color.length);
// Define chart type (line)
AxisChartDataSet axisChartDataSet = new AxisChartDataSet(_data, _legendLabels, paints, ChartType.LINE, lineChartProperties);
dataSeries.addIAxisPlotDataSet(axisChartDataSet);
ChartProperties chartProperties = new ChartProperties();
LabelAxisProperties xaxis = new LabelAxisProperties();
DataAxisProperties yaxis = new DataAxisProperties();
yaxis.setUseCommas(showGrouping);
if (legendFont != null) {
yaxis.setAxisTitleChartFont(new ChartFont(legendFont, new Color(20)));
yaxis.setScaleChartFont(new ChartFont(legendFont, new Color(20)));
xaxis.setAxisTitleChartFont(new ChartFont(legendFont, new Color(20)));
xaxis.setScaleChartFont(new ChartFont(legendFont, new Color(20)));
}
if (titleFont != null) {
chartProperties.setTitleFont(new ChartFont(titleFont, new Color(0)));
}
// Y Axis ruler
try {
// ~a tic every 50 px
double numInterval = _height / 50d;
double incrYAxis = max / numInterval;
double incrTopValue = _incrScaleYAxis;
if (_incrScaleYAxis == 0) {
incrTopValue = getTopValue(incrYAxis, BigDecimal.ROUND_HALF_UP);
}
if (incrTopValue < 1) {
// Increment cannot be < 1
incrTopValue = 1.0d;
}
yaxis.setUserDefinedScale(0, incrTopValue);
yaxis.setNumItems((int) (max / incrTopValue) + 1);
yaxis.setShowGridLines(1);
} catch (PropertyException e) {
log.warn("Exception while setting Y axis properties.", e);
}
AxisProperties axisProperties = new AxisProperties(xaxis, yaxis);
axisProperties.setXAxisLabelsAreVertical(true);
LegendProperties legendProperties = new LegendProperties();
legendProperties.setBorderStroke(null);
legendProperties.setPlacement(legendPlacement);
legendProperties.setIconBorderPaint(Color.WHITE);
legendProperties.setIconBorderStroke(new BasicStroke(0f, BasicStroke.CAP_SQUARE, BasicStroke.CAP_SQUARE));
// Manage legend placement
legendProperties.setNumColumns(LegendAreaProperties.COLUMNS_FIT_TO_IMAGE);
if (legendPlacement == LegendAreaProperties.RIGHT || legendPlacement == LegendAreaProperties.LEFT) {
legendProperties.setNumColumns(1);
}
if (legendFont != null) {
legendProperties.setFont(legendFont);
}
AxisChart axisChart = new AxisChart(dataSeries, chartProperties, axisProperties, legendProperties, _width, _height);
axisChart.setGraphics2D((Graphics2D) g);
axisChart.render();
} catch (ChartDataException | PropertyException e) {
log.warn("Exception while rendering axis chart.", e);
}
}
use of org.jCharts.axisChart.AxisChart in project jmeter by apache.
the class LineGraph method drawSample.
private void drawSample(String _title, String[] _xAxisLabels, String _xAxisTitle, String _yAxisTitle, double[][] _data, int _width, int _height, Graphics g) {
try {
if (_width == 0) {
_width = 450;
}
if (_height == 0) {
_height = 250;
}
this.setPreferredSize(new Dimension(_width, _height));
DataSeries dataSeries = new DataSeries(_xAxisLabels, _xAxisTitle, _yAxisTitle, _title);
String[] legendLabels = yAxisLabel;
Paint[] paints = this.createPaint(_data.length);
Shape[] shapes = createShapes(_data.length);
Stroke[] lstrokes = createStrokes(_data.length);
LineChartProperties lineChartProperties = new LineChartProperties(lstrokes, shapes);
AxisChartDataSet axisChartDataSet = new AxisChartDataSet(_data, legendLabels, paints, ChartType.LINE, lineChartProperties);
dataSeries.addIAxisPlotDataSet(axisChartDataSet);
ChartProperties chartProperties = new ChartProperties();
AxisProperties axisProperties = new AxisProperties();
// show the grid lines, to turn it off, set it to zero
axisProperties.getYAxisProperties().setShowGridLines(1);
axisProperties.setXAxisLabelsAreVertical(true);
// set the Y Axis to round
DataAxisProperties daxp = (DataAxisProperties) axisProperties.getYAxisProperties();
daxp.setRoundToNearest(1);
LegendProperties legendProperties = new LegendProperties();
AxisChart axisChart = new AxisChart(dataSeries, chartProperties, axisProperties, legendProperties, _width, _height);
axisChart.setGraphics2D((Graphics2D) g);
axisChart.render();
} catch (Exception e) {
log.error("Error while rendering axis chart. {}", e.getMessage());
}
}
Aggregations