1

我正在尝试使用 cfchart 来显示消息数量并且一切正常,但是当我有少量数字时,它会将其分解为小数。有没有办法让它总是设置为整数?

这是代码:

<cfchart format="#display#" type="bar" show3d="no" showlegend="false" chartHeight="300" chartWidth="220">
       <cfchartseries  colorlist="##E18014,green,red" type="bar">
             <cfchartdata item="Calls Made" value="#voice_messages.TotalMessages#">

             <cfchartdata item="Successful" value="#voice_messages.ReceiptsReceived#">
             <cfif #voice_messages.DeliveryFailures# neq "0">
             <cfchartdata item="Bus/No Ans" value="#voice_messages.DeliveryFailures#">
             </cfif>
       </cfchartseries>
</cfchart>

这是图表的图片

在此处输入图像描述

我在 Stack 和网络上查看了所有内容,但没有找到任何东西。任何帮助将不胜感激。

谢谢!!

4

3 回答 3

1

<cfchart>有一个名为 的属性yAxisValues。它接受一个值数组。对于这种情况,一旦我有了我的数据,我会做一些事情来生成一个合适的数组来用于这个属性。

于 2020-04-17T20:30:11.700 回答
-1

我现在给你另一个答案。这是不得已而为之的答案,因为它涉及更改 ColdFusion 服务器设置。也许是您无法在网络上轻松找到它的原因。再次,请事先警告:这是服务器设置的更改。所以备份你的文件!

ColdFusion 2018(我的版本)使用 ZingCharts 的设置来配置 cfcharts 中的样式。您将在 C:\ColdFusion2018\cfusion\charting\styles 中找到相关文件。您想要编辑条形图的样式文件。

在文本编辑器中打开文件 C:\ColdFusion2018\cfusion\charting\styles\bar。它具有 JSON 格式。

找到元素“scale-y”。它开始于:

"scale-y" : { "format" : "%v", "font-size" : 16, ... 等等。

在它前面加上键值对“小数”:0。结果应该是:

"scale-y" : { "decimals" : 0, "format" : "%v", "font-size" : 16, ... 等等。

这将确保 y 轴有 0 个小数位。

保存文件并重新启动 ColdFusion 以使更改生效。

您现在已将 cfchart 条形图中的 y 轴配置为不再有小数。

您会注意到元素“scale-y”是“graphset”的子元素。如果您有兴趣了解有关其设置的更多信息,请访问https://www.zingchart.com/docs/api/json-configuration/graphset

于 2020-04-21T09:53:58.167 回答
-1

验证图表数据值 voice_messages.TotalMessages、voice_messages.ReceiptsReceived 和是否为整数。使用类似的东西:

<cfset displayChart=false>

<cfif    (isNumeric(voice_messages.TotalMessages) and voice_messages.TotalMessages gte 0)
     and (isNumeric(voice_messages.ReceiptsReceived) and voice_messages.ReceiptsReceived gte 0)
     and (isNumeric(voice_messages.DeliveryFailures) and voice_messages.DeliveryFailures gte 0)>

    <cfset numberOfMessages=int(voice_messages.TotalMessages)>
    <cfset numberOfReceipts=int(voice_messages.ReceiptsReceived)>
    <cfset numberOfFailures=int(voice_messages.DeliveryFailures)>

    <cfset displayChart=true>
</cfif>

<cfif displayChart>
    <!--- You may have to increase the chartWidth to make room for all the labels--->
    <cfchart format="png" type="bar" show3d="no" showlegend="false" chartHeight="300" chartWidth="300">
       <cfchartseries  colorlist="##E18014,green,red" type="bar">
             <cfchartdata item="Calls Made" value="#numberOfMessages#">

             <cfchartdata item="Successful" value="#numberOfReceipts#">
             <cfif numberOfFailures neq 0>
                <cfchartdata item="Bus/No Ans" value="#numberOfFailures#">
             </cfif>
       </cfchartseries>
   </cfchart>
<cfelse>
    Sorry, chart cannot be displayed because chartdata are not all integers.
</cfif>

无论如何,您应该意识到您显示的显示中的标签与代码中的标签不对应。

于 2020-04-19T14:03:51.383 回答