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% должно (по волшебному волшебству) возвращать любое значение в параметре значения chartdata в виде симпатичного числа выше или ниже бара (или так, как я ожидал), но это ничего не делает, поэтому я не могу проверить свои ожидания.

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

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

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

Другие вопросы по тегам