cfcharts отображает поле значений png (с числами) из cfquery и 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# и т. д. есть замены переменных... как вы можете видеть выше (я не видел ни одной из этих json-работ, которые я пробовал (весь день) (так много разных способов/комбинаций, чтобы сделать что-то Это либо завершается с ошибкой и (потому что я допустил ошибку), либо ничего не делает (что удивительно).

Могут быть проблемы с этим материалом json выше, но я снова перезаписал изменение за изменением с новыми попытками json, встроенным json тоже, упрощенным и т. д.

Я считаю, что должно произойти то, что значение графика: box text: v% должно (по волшебной магии) возвращать любое значение в параметре значения диаграммы в виде красивого числа выше или ниже полосы (или я ожидал), но он ничего не делает, поэтому я не могу проверить свои ожидания.

Дайте мне знать, если нужны подробности...

PS и к вашему сведению: я не могу работать с другими пакетами для построения графиков.


person Frank Tudor    schedule 17.02.2015    source источник


Ответы (1)


Ну, все, что вам нужно сделать, это лечь спать полностью побежденным, чтобы драться в другой день.

Вот решение (оно прикреплено к контейнеру 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. Есть обсуждение ошибки, которое проливает больше света на то, что делать.

person Frank Tudor    schedule 17.02.2015