cfcharts 从 cfquery 和 cfloop 中绘制值框 png(带有数字)

cfcharts plot value-box png (with numbers) from cfquery and cfloop

我需要创建一个生成的基于 png 的图表文件,其中包含带有数值的绘图标签,如下例所示。我使用的是 Coldfusion 10,所以这是使用较新的 ZingChart 引擎。你看到的这个例子是ZingChart Builder.

做的

顺便说一句,我可以将基本图表绘制到 png 文件中并检索它,并查看它!我可以把我的 X 和 Y 东西做好。我可以在图例中展示我的系列,我可以做基本的定位,我可以做不同的图表类型。我似乎无法对 json 覆盖内容做任何事情,尤其是绘图栏标签。

我提供的代码来自我从互联网上搜索来测试的示例...但它应该很好地失败(就像我的一整天一样)。

<cfscript>
    legend = {
        "width":150,
        "height":25,
        "position":"100% 0%",
        "margin-top":10,
        "margin-right":10,
        "margin-left":10,
        "margin-bottom":10,
        "layout":"x2",
        "alpha":0.5,
        "background-color":"##99cc66",
        "background-color-2":"##99cc66",
        "border-color":"##000000",
        "border-width":1,
        "shadow":true,
        "shadow-alpha":1,
        "shadow-color":"##000000",
        "shadow-distance":2,
        "shadow-blur-x":1,
        "shadow-blur-y":1,
        "draggable":false,
        "minimize":false
    };
    type ="bar";
    plot = {
        "value-box":{
            "type":"all",
            "text":"%v",
            "text-align":"center",
            "alpha":0.5,
            "background-color":"##99cc66",
            "background-color-2":"##99cc66",
            "border-color":"##000000",
            "border-width":1
        }
    };
</cfscript>
<cfchart
legend="#legend#"
plot="#plot#"
type="#type#"
showlegend="true"
height="300"
width="1300" 
title="Super fun time!" 
format="png" 
name="moreComplexThanChineseArithmetic">
    <cfchartseries seriescolor="red" seriesLabel="SeriesA"  >
        <cfloop from="1" to="10" index="i">
            <cfchartdata item="" value="#randRange( 5, 100 )#">
        </cfloop>
    </cfchartseries>
    <cfchartseries seriescolor="green"  seriesLabel="SeriesB"  >
        <cfloop from="1" to="10" index="i">
        <cfchartdata item="" value="#randRange( 5, 100 )#">
        </cfloop>
    </cfchartseries>
    <cfchartseries seriescolor="blue" seriesLabel="SeriesC" >
        <cfloop from="1" to="10" index="i">
        <cfchartdata item="" value="#randRange( 5, 100 )#">
        </cfloop>
    </cfchartseries>
</cfchart>
<cfset savedFile = getTempFile("/dynamic/coldfusion/temp/", "moreComplexThanChineseArithmetic") & ".png" />
<cfset fileWrite(savedFile, moreComplexThanChineseArithmetic) />     
<img src="<cfoutput>#savedFile#</cfoutput>" />

我在集群环境中,这些图表不可用 HTML,因此 png 解决方法。另外,我必须像图像一样使用它,因为图像可以缩放并且我可以导出为 PDF 并且它看起来正确并且服务器呈现并将它拍摄到客户端所以我的客户端延迟很少。

现在。 #plot# 中有变量替换,等等......正如你在上面看到的(我还没有看到 'any' 我已经尝试过的 json 东西(一整天)(这么多不同的ways/combos 让事情发生。它要么失败并出现错误(因为我犯了一个错误),要么什么都不做(这太棒了)。

上面的 json 内容可能存在问题,但我再次尝试用新的 json 尝试、内联 json 和简化等方式覆盖了更改后的更改。

我认为应该发生的是情节 value:box text: v% should (by fairy magic) return 无论图表数据值参数中的值是高于还是低于一个不错的数字酒吧(或者我所期望的),但它没有做任何事情,所以我无法测试我的期望。

如果需要更多详细信息,请告诉我...

PS 仅供参考:我无法使用其他图表包。

好吧,你所要做的就是完全失败地去睡觉,改天再战。

这是解决方案(它附加到 chartseries 容器)。 >>>> datalabelstyle="value"

<cfchartseries 
    datalabelstyle="value" 
    type="bar" 
    seriescolor="blue" 
    seriesLabel="SeriesC" >
        <cfloop from="1" to="10" index="i">
        <cfchartdata item="" value="#randRange( 5, 100 )#">
        </cfloop>
</cfchartseries>

更重要的是。 JSON 东西只适用于 format="html"...它不适用于 format="png"format="png" 不使用 zingcharts,它回退到 webcharts3D 引擎。 Coldfusion 10 有两个图表引擎。我希望这可以帮助其他陷入这种怪异的人。此外,对于 Coldfusion 11,webcharts3d 可以工作。 There is a bug discussion that sheds more light on what to do.