cfchart игнорирует мое значение масштаба - PullRequest
0 голосов
/ 30 апреля 2010

На моей странице есть следующие коды.

Переменная style содержит пользовательский стиль.

  <cfchart chartheight="450" chartwidth="550" gridlines="9"   yaxistitle="Score" scalefrom="20" scaleto="100" style="#style#"   format="png" >
         <cfchartseries query="variables.chart_query" type="scatter"   seriescolor="##000000" itemcolumn="MyItem" valuecolumn="MyScore"/>
     </cfchart>

Прежде чем я начну, посмотрите chart_good.jpg . Вот как я хочу, чтобы мой отчет вышел. На оси х всегда будет три элемента, если хотя бы один из них имеет значения. Если у элемента нет значений (например, 2010), на диаграмме не будет маркера.

Проблема возникает только тогда, когда имеет значение только один предмет. Пожалуйста, смотрите chart_bad.jpg . Как видите, 2008 и 2010 годы не имеют никаких значений; Ось Y теперь масштабируется от 0 до 100. Я попытался установить для одного из элементов (например, 2008) значение 0 или что-то вне графика; он будет масштабироваться в соответствии с этим внеплановым значением и значением 2009 года. Короче говоря, мне нужно иметь как минимум два элемента со значениями от 20 до 100, чтобы cfchart мог масштабироваться от 20 до 100.

Мой вопрос: как я могу исправить проблему, чтобы cfchart ВСЕГДА масштабировался от 20 до 100? Я бегу CF9.

1 Ответ

0 голосов
/ 22 ноября 2011

Что внутри вашей переменной стиля?

Я бы предложил не использовать scaleFrom = "" и scaleTo = "" в теге cfchart, так как иногда они могут содержать ошибки. Я полагаю, что тег Coldfusion cfchart пытается автоматически масштабировать диаграмму до того уровня, который он считает наиболее подходящим. Вместо этого я бы построил минимальный и максимальный масштаб диаграммы внутри тега frameChart.

Пример переменной стиля для построения диаграммы

<cfsavecontent variable="style">
  <?xml version="1.0" encoding="UTF-8"?>

  <frameChart is3D="false" font="Arial-11-bold">
    <frame xDepth="0" yDepth="0" outline="black" lightColor="#CCCCCC" darkColor="#CCCCCC"
            wallColor="#CCCCCC" frameSize="5" dashSize="3" gridColor="#333333">
        <background type="HorizontalGradient" maxColor="#828EB0"/>
    </frame>



    <!---  THE BREAD AND BUTTER 
           NOTE: if you use variables for the scaleMin and scaleMax
           make sure to surround them with a cfoutput tag
    --->

    <yAxis scaleMin="20" scaleMax="100">
    <!--- --------------------- --->

        <labelFormat style="Currency" pattern="#,##0"/>
        <parseFormat pattern="#,##0"/>
        <titleStyle></titleStyle>
    </yAxis>

    <legend allowSpan="true" isVisible="false" placement="Bottom" valign="Bottom" foreground="black"
            isMultiline="true">
        <decoration style="None"/>
    </legend>

    <elements outline="black" shapeSize="40"/>
    <popup background="#748BA6" foreground="white"/>
    <paint palette="Modern" paint="Plain" isVertical="true"/>
    <insets right="5"/>

   </frameChart>

</cfsavecontent>

Тогда все, что вам нужно сделать, это загрузить переменную в атрибут style, как вы уже упоминали.

<cfchart format="png" chartWidth="550" chartHeight="175" style="#style#">

Также отличным ресурсом для использования является программа Webcharts, которая будет находиться в вашем каталоге C: / coldfusion / charting /. Просто откройте webcharts.bat , создайте свой собственный график, скопируйте код xml в переменную стиля и вуаля!

Обязательно удалите scaleTo = и scaleFrom = из тега cfchart, если вы решите пойти по этому пути.

...