有没有办法在 JFreeChart PieChart 的图例中包含一些任意文本?我知道可以分配一个
我想在图例中插入一些与任何饼图部分完全无关的文本,例如"图例"。
我正在像这样构建图表:
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | List<Object[]> llistaValorsArr; ParamsDTO dto = (ParamsDTO) getModelObject(); List llistaValors = statisticsService.getStatistics(dto); if (!llistaValors.isEmpty() && !(llistaValors.get(0) instanceof Object[])){ llistaValorsArr = new ArrayList<Object[]>(); llistaValorsArr.add(new Object[]{llistaValors.get(0),""}); } else{ llistaValorsArr = (List<Object[]>) llistaValors; } DefaultPieDataset dataSet = new DefaultPieDataset(); for (Object[] objects : llistaValorsArr) { dataSet.setValue((Comparable) objects[1], (Number)objects[0]); } String title ="Total:" + new Double(DatasetUtilities.calculatePieDatasetTotal(dataSet)).intValue(); JFreeChart chart = ChartFactory.createPieChart(title, dataSet, true, false, true); final PiePlot plot = (PiePlot) chart.getPlot(); plot.setForegroundAlpha(0.5f); plot.setNoDataMessage("No data"); PieSectionLabelGenerator labelGenerator = new StandardPieSectionLabelGenerator("{0} - {1} ({2})"){ @Override protected Object[] createItemArray(PieDataset dataset, Comparable key) { // TODO Auto-generated method stub Object[] array = super.createItemArray(dataset, key); array[0] = getEntityLabel(key); return array; } }; plot.setLabelGenerator(labelGenerator); plot.setLegendLabelGenerator(labelGenerator); //plot.setStartAngle(290); boolean circular = true; plot.setCircular(circular); return chart; } |
更新:我刚刚发现
更新 2:我一直试图在
2 3 | BlockContainer container = legend.getWrapper(); container.add(new TextTitle("Legend")); |
添加一个"图例"文本来装饰图例应该没有那么复杂。
查看
查看
因此,解决方案是以类似的方式将
2 3 | legendText.setPosition(RectangleEdge.BOTTOM); chart.addSubtitle(legendText); |
我有一个我最近构建的多轴图表,并提出了这个方案来区分我使用折线图显示的时间段,以显示前 12 个月强加于显示当前 12 个月的条形图。 如果您想在您的其他系列之前添加文本,以便您的图例看起来像这样: 前 12 个月:* 费用 * adj * 现金 当前 12 个月:* 费用 * adj * 现金 *\\ 是您的系列的形状/颜色。 (我会附上一张照片,但我没有足够的代表点......这是我第一篇关于堆栈溢出的帖子=)) 然后我建议添加一个系列并将其作为图表中的第一个系列(系列 0)。将此系列命名为您要显示的任何文本(我的示例是 "Previous 12 Months: "。然后您可以使用一些 java 自定义系列 0,以便数据不会显示在图表上,但您仍然可以在传奇。 这是我用于使折线图线条/形状不可见的自定义方法: 如果它是另一种类型的图表,例如条形图,那么只需将系列 0 的颜色设置为与背景匹配,并给它一个类似 1 的值。请注意,这确实会增加条形之间的空间!我的图表上条形之间的额外空间使它看起来更好,但如果您喜欢图表条之间的间距,这不是一个好的解决方案。 不确定这对于回答最初的问题是否有用,但对于希望在图表图例中添加文本的人来说,这是另一种选择。 享受吧!
2
3
4
5
6
7
8
9
public void customize(JFreeChart chart, JRChart jasperChart) {
LineAndShapeRenderer renderer = (LineAndShapeRenderer) chart.getCategoryPlot().getRenderer();
renderer.setSeriesLinesVisible(0, false);
renderer.setSeriesShapesVisible(0, false);
etc ....
}
另一种可能性是创建一个实现接口
如果你想控制图例项目的放置位置或每个项目源的顺序,你可以覆盖 LegendTitle。
我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,
当我使用Bundler时,是否需要在我的Gemfile中将其列为依赖项?毕竟,我的代码中有些地方需要它。例如,当我进行Bundler设置时:require"bundler/setup" 最佳答案 没有。您可以尝试,但首先您必须用鞋带将自己抬离地面。 关于ruby-我需要将Bundler本身添加到Gemfile中吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4758609/
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
我有一个ModularSinatra应用程序,我正在尝试将Bootstrap添加到应用程序中。get'/bootstrap/application.css'doless:"bootstrap/bootstrap"end我在views/bootstrap中有所有less文件,包括bootstrap.less。我收到这个错误:Less::ParseErrorat/bootstrap/application.css'reset.less'wasn'tfound.Bootstrap.less的第一行是://CSSReset@import"reset.less";我尝试了所有不同的路径格式,但它
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www
当谈到运行时自省(introspection)和动态代码生成时,我认为ruby没有任何竞争对手,可能除了一些lisp方言。前几天,我正在做一些代码练习来探索ruby的动态功能,我开始想知道如何向现有对象添加方法。以下是我能想到的3种方法:obj=Object.new#addamethoddirectlydefobj.new_method...end#addamethodindirectlywiththesingletonclassclass这只是冰山一角,因为我还没有探索instance_eval、module_eval和define_method的各种组合。是否有在线/离线资
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/