java-在JFreeChart堆叠3D条形图中更改自定义颜色
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-在JFreeChart堆叠3D条形图中更改自定义颜色,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3374字,纯文字阅读大概需要5分钟。
内容图文
![java-在JFreeChart堆叠3D条形图中更改自定义颜色](/upload/InfoBanner/zyjiaocheng/692/f5ad62b427c74fd0a3eaab2f167c0b85.jpg)
我已经在网上搜索了足够多的内容,但是没有运气.
我创建了一个堆积的3d条形图,其中无法更改默认颜色.我尝试了所有提供的建议.
下面是我的代码的一小段.这是我的意见.
我从Db获得的数据是:
A 0 2 B 15 53 C 0 2 D 0 2 E 0 1 F 1 0 G 0 1
我以某种方式将其转换为数据集需求,并添加了项和模型.
CategoryDataset dataset = DatasetUtilities.createCategoryDataset(item,models, data);
chart = ChartFactory.createStackedBarChart3D(chartDescription, X-axis, Y-axis, dataset,PlotOrientation.VERTICAL, true, true, true);
CategoryPlot plot = chart.getCategoryPlot();
CategoryItemRenderer r = plot.getRenderer();
r.setSeriesPaint(0, Color.GREEN);
r.setSeriesPaint(1, Color.GRAY);
plot.setRenderer(new StackedBarRenderer3D() {
@Override
public Paint getItemPaint(int row, int col) {
System.out.println("row:"+row);
System.out.println("Col:"+col);
return Color.getHSBColor(row / 42f, 1, 1);
}
});
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
StackedBarRenderer3D renderer = (StackedBarRenderer3D)plot.getRenderer();
//renderer.setBarPainter(new StandardBarPainter());
renderer.setSeriesFillPaint(0,Color.BLACK);
renderer.setSeriesFillPaint(1,Color.GREEN);
renderer.setDrawBarOutline(false);
renderer.setShadowVisible(false);
renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.CENTER,TextAnchor.CENTER));
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setIgnoreZeroValues(true);
renderer.setMaximumBarWidth(.05);
renderer.setBaseItemLabelsVisible(true);
renderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());
renderer.setPositiveItemLabelPositionFallback(new ItemLabelPosition(
ItemLabelAnchor.CENTER, TextAnchor.CENTER_RIGHT));
renderer.setNegativeItemLabelPositionFallback(new ItemLabelPosition(
ItemLabelAnchor.CENTER, TextAnchor.CENTER_RIGHT));
renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(
ItemLabelAnchor.CENTER, TextAnchor.TOP_CENTER));
renderer.setBaseNegativeItemLabelPosition(new ItemLabelPosition(
ItemLabelAnchor.CENTER, TextAnchor.TOP_CENTER));
LegendTitle legend = chart.getLegend(0);
legend.setBackgroundPaint(Color.white);
legend.setFrame(new BlockBorder(Color.green));
StandardChartTheme theme = (StandardChartTheme)org.jfree.chart.StandardChartTheme.createJFreeTheme();
theme.setTitlePaint(Color.decode("#4572a7"));
theme.setExtraLargeFont(new Font("Arial",Font.BOLD, 16) );
theme.setLargeFont(new Font("Arial",Font.BOLD, 15));
theme.setRegularFont( new Font("Arial",Font.PLAIN, 11));
theme.setRangeGridlinePaint(Color.RED);
theme.setPlotBackgroundPaint( Color.white );
theme.setChartBackgroundPaint( Color.white );
theme.setItemLabelPaint(Color.YELLOW);
theme.setShadowVisible(true);
theme.setAxisLabelPaint( Color.decode("#666666") );
theme.apply( chart );
甚至我都用过setSeriespaint,但是它不起作用.
与图表,绘图和渲染器中的创建顺序有关系吗?
当我打印行和列时,我得到以下信息:
row:1 Col:0 row:0 Col:1 row:1 Col:1 row:1 Col:2 row:1 Col:3 row:1 Col:4 row:0 Col:5 row:1 Col:6
解决方法:
您可以覆盖渲染器的getItemPaint(),如here所示.
plot.setRenderer(new StackedBarRenderer3D() {
@Override
public Paint getItemPaint(int row, int col) {
return Color.getHSBColor(row / 42f, 1, 1);
}
});
内容总结
以上是互联网集市为您收集整理的java-在JFreeChart堆叠3D条形图中更改自定义颜色全部内容,希望文章能够帮你解决java-在JFreeChart堆叠3D条形图中更改自定义颜色所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。