Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как по горизонтали расположить 2 графика / 4 сообщений из 4, страница 1 из 1
08.08.2015, 09:57
    #39025444
О-О-О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как по горизонтали расположить 2 графика
Как в %ZEN.Report (при генерации отчётов) расположить два графика по горизонтали рядом (один слева, второй справа).

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
В %ZEN.Component.abstractPage это сделать легко.
<svgFrame id="svgFrame" width="1917" height="1080" zoom="78" layout="horizontal" backgroundStyle="fill: #EEEEEE;">
 <svgGroup layout="horizontal">

<lineChart id="id1" controllerId="Ctrid1" width="1075" height="215"
    ...    />
<xAxis id="X1"
    ...	/>
<yAxis id="Y1"
    ..." />
</lineChart>

  Затем!

  <svgSpacer width="7"/> 

 и рисуем второй график, можно третий, четвёртый...

<lineChart id="id2" controllerId="Ctrid2" width="1075" height="215"
    ...    />
<xAxis id="X2"
    ...	/>
<yAxis id="Y2"
    ..." />
</lineChart>
 
  <svgSpacer width="7"/> 



То есть на странице графики можно группировать как душе угодно, хоть в шахматном порядке, хоть по группам, хоть по размеру, хоть по диагонали.
Мы можем задавать отступы слева, сверху, группировать графики по горизонтали или по вертикали.
Второй день ищу - примеров явно мало, а то что есть только один график (нет двух по горизонтали одновременно).

Пытался с фреймами, блоками, группами - везде пишет ошибку.
Фантазия иссякла. Помощь по документации - отсутствует (анализировал все ключевые слова с словосочетания, которые хоть как то могут повлиять на расположение графиков на странице).

P.S. - очень убивает когда нужно расположить один длинный график и два коротких, приходится делать все столбиком, что не информативно.
.
...
Рейтинг: 0 / 0
10.08.2015, 08:37
    #39025937
О-О-О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как по горизонтали расположить 2 графика
Вот что можно сделать при выводе графиков через ZEN, как cls (Extends %ZEN.Component.abstractPage).

По горизонтали два-три графика.

.

Как то же самое сделать в Zen Отчёте [%ZEN.Report.reportPage] (расположить два-три графика по горизонтали)
...
Рейтинг: 0 / 0
10.08.2015, 13:31
    #39026247
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как по горизонтали расположить 2 графика
О-О-О ,
Например, так:Class RobotGrafiki4.kakPDF Extends %ZEN.Report.reportPage
{

/// This is the default display mode for this report.
Parameter DEFAULTMODE = "pdf";

/// This XML defines the logical contents of this report.
XData ReportDefinition [ XMLNamespace = " http://www.intersystems.com/zen/report/definition"  ]
{
<report xmlns=" http://www.intersystems.com/zen/report/definition"  name="test" runonce="true">
  <!-- dummy ReportDefinition, all data is gotten from callback methods ongetXXX -->
</report>
}

/// This XML defines the display for this report.
/// This is used to generate the XSLT stylesheets for both HTML and XSL-FO.
XData ReportDisplay [ XMLNamespace = " http://www.intersystems.com/zen/report/display"  ]
{
<report xmlns=" http://www.intersystems.com/zen/report/display"  name="test">
  <document width="355mm" height="269mm" marginLeft="5" marginRight="5" marginTop="0" marginBottom="0" headerHeight="0" />
  <body>
  <table orient="col" xslfostyle="margin:10px 0 0 10px">
    <ccomboChart
      id="d1"
      title=" " 
      titleX="46" titleY="5" 
      titleStyle="font-size: 9px; fill:#929292;"
      width="300" height="245"
      legendVisible="false"
      backgroundStyle="fill:#DCDCDC;"
      plotAreaStyle="fill:#F9FAFB;"
      seriesColors="#FF0000,#22B14C,#262728,#D2D2D2"
      seriesCount="4"
      seriesSize="521"
      seriesTypes="line,line,line,area"
      lineStyle="stroke-width:1px;"
      ongetData="getChartData"
      plotStyle="stroke-width: 0.25; fill-opacity: 1;"
      markerScale="0"
      marginRight="10" marginBottom="1" marginLeft="1" marginTop="10">
    <xAxis id="xAxis"
      labelStyle="font-size: 8px; "
      majorGridLines="true" majorGridStyle="stroke-width: 1px; color:#EEEEEE; opacity: 0.2;" majorUnits="60"
      minorGridLines="true" minorGridStyle="stroke-width:0.1; color:#EEEEEE;" minorUnits="15"
      minValue="0"  baseValue="0" maxValue="530"
    />
    <yAxis id="yAxis"
      labelAngle="45" labelStyle="font-size: 10px; font-family: Arial Narrow; fill:#222222;"
      labelPosition="right" majorUnits="50"
      majorGridLines="true" majorGridStyle="stroke-width: 1px; color:rgb(255,0,255); opacity: 0.2;"
      minorGridLines="false"
      minValue="7060" baseValue="0" maxValue="7330"
    />
    </ccomboChart>

    <line pattern="empty" width="5px"/>
    
    <clineChart 
      id="d2" 
      title=" "
      titleX="40" titleY="5"
      titleStyle="font-size: 10px; fill:#929292;"
      width="300" height="255"
      legendVisible="false"
      backgroundStyle="fill:#DCDCDC;"
      plotAreaStyle="fill:#F3F3F3;"
      seriesColors="#5CAADE,#2424E0,#DD8282,#E00000,#A3A3A3,#515151"
      seriesCount="4" 
      seriesSize="521"
      ongetData="getChartData2"
      ongetLabelY="dd"
      lineStyle="stroke-width:1px;"
      plotStyle="stroke-width: 0.3; fill-opacity: 1;"
      markerScale="0"
      marginRight="10" marginBottom="1" marginLeft="1" marginTop="10">
    <xAxis
      labelStyle="font-size: 8px; "
      majorGridLines="true" majorGridStyle="stroke-width: 1px; color:rgb(255,0,255); opacity: 0.2;" majorUnits="60"
      minorGridLines="true" minorGridStyle="stroke-width: 0.1; color: #EEEEEE;" minorUnits="15"
      minValue="0"  baseValue="0" maxValue="530"
    />
    <yAxis
      labelAngle="45" labelStyle="font-size: 10px; font-family: Arial Narrow; fill:#555555;"
      labelPosition="right" majorUnits="0.100"
      majorGridLines="true" majorGridStyle="stroke-width: 1px; color:rgb(255,0,255); opacity: 0.2;"
      minorGridLines="true" minorGridStyle="stroke-width: 0.1; color: #E0FFFF;" minorUnits="0.050"
      minValue=""  baseValue="0" maxValue=""
    />
    </clineChart>
    
    <line pattern="empty" width="5px"/>

    <clineChart 
      id="d3" 
      title=" "
      titleX="40" titleY="6"
      titleStyle="font-size: 10px; fill:#929292;"
      width="300" height="245"
      legendVisible="false"
      backgroundStyle="fill:#DCDCDC;"
      plotAreaStyle="fill:#F3F3F3;"
      seriesColors="#DD8282,#E00000,#A3A3A3,#515151,#FFC90E,#5CAADE,#2424E0,#FFC90E"
      seriesCount="4" 
      seriesSize="521"
      ongetData="getChartData3"
      ongetLabelY="dd"
      valueLabelFormat="#.##"
      lineStyle="stroke-width:1px;"
      plotStyle="stroke-width: 0.3; fill-opacity: 1;"
      markerScale="0"
      marginRight="10" marginBottom="1" marginLeft="1" marginTop="10">
    <xAxis
      labelStyle="font-size: 8px; "
      majorGridLines="true" majorGridStyle="stroke-width: 1px; color:rgb(255,0,255); opacity: 0.2;" majorUnits="60"
      minorGridLines="true" minorGridStyle="stroke-width: 0.1; color: #EEEEEE;" minorUnits="15"
      minValue="0"  baseValue="0" maxValue="521"
    />
    <yAxis
      labelAngle="45" labelStyle="font-size: 10px; font-family: Arial Narrow; fill:#444444;"
      majorGridLines="true" majorGridStyle="stroke-width: 1px; color:rgb(255,0,255); opacity: 0.2;" labelUnits="0.400" majorUnits="0.400"
      labelPosition="right" minorGridLines="true" minorGridStyle="stroke-width: 0.1; color: #E0FFFF;" minorUnits="0.200"
      minValue=""  baseValue="0" maxValue=""
    />
    </clineChart>
    </table>
  </body>
</report>
}

/// Get chart data
Method getChartData(
  ByRef data,
  chartObject)
{

  Set data(0,0)=""
  Set data(1,0)=""
  Set data(2,0)=""
  Set data(3,0)=""

  For i=1:1:520 {
    Set data(0,i)=""
    Set data(1,i)=7070+$Random(20)
    Set data(2,i)=7195+$Random(70)
    Set data(3,i)=7280+$Random(40)
  }
}

Method getChartData2(
  ByRef data,
  chartObject)
{
  Set data(0,0)=""
  Set data(1,0)="" 
  Set data(2,0)=""
  Set data(3,0)="" 

  For i=1:1:520 {
    Set data(0,i)=0.100
    Set data(1,i)=0.180
    Set data(2,i)=0.120
    Set data(3,i)=0.150     
  }
}

Method getChartData3(
  ByRef data,
  chartObject)
{
  Set data(0,0)=""
  Set data(1,0)=""
  Set data(2,0)=""
  Set data(3,0)=""

  For i=1:1:520 {
    Set data(0,i)=($Random(3))/12+0.350
    Set data(1,i)=($Random(4))/16+0.420
    Set data(2,i)=($Random(5))/20+0.280
    Set data(3,i)=($Random(4))/16+0.240
  }
}

Method dd(
  value,
  yAxisNo,
  chartObject)
{
  s format=chartObject.valueLabelFormat
  s format=$s(format'="" : format, 1 : $s(($$$FLOOR(value)'=value):"#,#.###", 1:"#,##"))
  q ##class(%DeepSee.ResultSet).%FormatNumber(value,format)
}

}
...
Рейтинг: 0 / 0
10.08.2015, 14:03
    #39026280
О-О-О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как по горизонтали расположить 2 графика
servit,

Спасибо. Значит делаем через таблицы.

Для остальных немножко расшифрую, можно выделить только нужное количество графиков и перед этой группой поместить<table orient="col" xslfostyle="margin:10px 0 0 10px">

а закрываем группу графиков как 

</table>В итоге у нас будут графики внутри невидимой таблицы.


Servit, ещё раз спасибо.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как по горизонтали расположить 2 графика / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]