【问题标题】:Jasper report stacked bar chart: issuesJasper 报告堆积条形图:问题
【发布时间】:2017-01-03 13:07:37
【问题描述】:

我正在使用 jasper 报告生成的堆积条形图(使用 jfree 图表),我有以下问题

  1. 如果条形图宽度非常小,则值不可见,(附图为1.png)

  2. 我需要固定颜色的固定值。(附件图像是 2.png) 例如,拒绝必须是红色,打开-黄色,已批准且未完成-橙色,已批准且已完成-绿色。 为此我使用系列颜色,但只有当所有部分(拒绝,打开,批准但未完成,批准和完成)都可用时,它才会给出正确的颜色,如果任何部分是任务,配色方案将会改变(原因是它将根据字母顺序采用颜色)。 但我想要严格的配色方案,而不管部分的可用性。 我尝试了不同的谷歌搜索/条形图定制器,但无法实现。 请发表您的想法。

提前致谢。

编辑 1:@Vikki888 解决方案后的图像

【问题讨论】:

  • 对于 2,你是如何获取数据的?
  • @Viki888,我正在从 mysql 数据库获取数据,我有一个查询将返回状态和计数。

标签: jasper-reports jfreechart


【解决方案1】:

对于问题2,您可以尝试以下步骤,

在图表设置中按如下顺序排列颜色,

i) Red

ii) Yellow

iii) Orange

iv) Green

下面是您的查询

Select status, count
from table1

只需将查询修改为以下格式,

SELECT 
    t1.status, 
    CASE WHEN t2.status IS NULL THEN 0 ELSE t2.count END as count
FROM 
    (SELECT 'Rejected' status, 1 as status_order
    UNION SELECT 'Open', 2
    UNION SELECT 'Approved and not fulfilled', 3
    UNION SELECT 'Approved and Fulfilled', 4) t1
LEFT JOIN 
    (Select status, count
    from table1) t2 
    ON t1.status = t2.status
ORDER BY t1.status_order ASC;

这将解决问题 2。

对于问题 1,检查您是否有 plotoptions 的任何对齐属性,如果有,请将其修改为 centerremove that option 并进行测试。

【讨论】:

  • @Vikki888,感谢您的评论,您能告诉我如何定义 Red-1、Yellow-2、Orange-3、Green-4 的映射。截至目前,我在 iReport 中使用系列,我正在定义颜色顺序。另一个问题是查询总是返回 (status , count)(Rejected 0),在 table1 我没有将计数作为列我正在做 count(*) 作为计数
  • 您不需要定义任何映射。在属性中定义颜色的顺序将自动映射到定义的系列。而Select status, count from table1 查询只是一个示例查询。您必须替换您现在拥有的查询,而不是它。
  • @Vikki888,感谢您的评论,我做了更改,但是颜色仍然没有按要求出现,问题是如果任何状态缺少该状态的颜色,下一个将采用(按状态顺序)因为我们在缺少状态的情况下将计数定义为 0,但如果计数为 0,它不会使用任何颜色。我已附上相关图像
  • 请用颜色属性设计更新您的问题。
猜你喜欢
  • 2019-06-19
  • 2016-06-29
  • 2019-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
相关资源
最近更新 更多