来自cfquery和cfloop的cfcharts plot value-box png(带数字)

时间:2015-02-17 00:51:34

标签: coldfusion coldfusion-10 cfchart zingchart

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

enter image description here

顺便说一句,我可以将一个基本图表绘制到一个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#等中有变量替换......正如你在上面所看到的那样(我还没有看到&#39;那些json的东西是我尝试过的(整天)(有很多不同的方式) /组合使事情发生)。它要么失败,要么错误(因为我犯了一个错误),或者什么也没做(这真是太棒了)。

上面的json内容可能存在问题,但是我再一次用新json尝试改变了改变,内联json,简化等等。

我认为应该发生的是情节值:框文本:v%应该(通过仙魔)返回chartdata值参数中的任何值作为条形图上方或下方的一个很好的数字(或者我希望如此),但它没有做任何事情,所以我无法测试我的期望。

如果需要更多细节,请告诉我......

PS和FYI:我无法处理其他图表包。

1 个答案:

答案 0 :(得分:2)

你所要做的就是上床睡觉彻底失败,再打一天。

这是解决方案(它附加到chartseries容器)。 &GT;&GT;&GT;&GT; 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.