Глядя на свой график, я чувствую, что этого можно достичь с помощью 100% -ной столбчатой диаграммы , в которой вы можете получить данные как для цветных, так и для серых участков. Затем используйте свойство метки, которое можно отобразить и с вращением .
Попытка получить похожий вид для гистограммы с использованием радиального градиента и стопроцентных столбцов
import { Component } from '@angular/core';
import { Surface, Path, Text, Group, Layout, LinearGradient, RadialGradient, GradientOptions, ShapeOptions } from '@progress/kendo-drawing';
import { Arc as DrawingArc, GradientStop } from '@progress/kendo-drawing';
import { Arc, Rect, ArcOptions } from '@progress/kendo-drawing/geometry';
function createColumn(rect, color) {
const origin = rect.origin;
const bottomRight = rect.bottomRight();
const radialgradient = new RadialGradient({
center:[0.5, 0],
stops: [new GradientStop(0.5, color, 1),
new GradientStop(1, "#98FB98", 1)]
});
const path = Path.fromRect(rect, {
fill: radialgradient,
stroke: {
color: color,
width: 1
}
});
const path1 = Path.fromRect(rect, {
fill: {color: color},
stroke: {
color: color,
width: 1
}
});
const group = new Group();
if(color == "#eee"){
group.append(path1);
}
else{
group.append(path);
}
return group;
}
@Component({
selector: 'my-app',
template: `
`
})
export class AppComponent {
public chartConfig = {
seriesDefaults: {
visual: function (e) {
return createColumn(e.rect, e.options.color);
}
}
};
}
Ваш пример кода выше работает для меня. Но вы также можете использовать супервариабель $ GLOBALS .
function Sum()
{
$a = $GLOBALS["a"];
$b =& $GLOBALS["b"];
$b = $a + $b;
}
Глобальные переменные не должны использоваться, если вы можете помочь этому. Есть лучшие способы сделать ваши функции. Используйте параметры (аргументы) (возможно, передайте ссылку ) и вместо этого верните значение .
/**
* Calculate the sum of the parameters
* @param int|float $a one or more parameter
* @param int|float $a, ...
* @return int|float
*/
function sum($a)
{
$args = func_get_args();
return array_sum($args);
}
$a = 1;
$b = 2;
$b = sum($a, $b);
С PHPDOC вы может понять, что ваши функции делают лет без чтения кода. С хорошей IDE вы также можете получить объяснение и порядок аргументов при написании функции.
Единственное, что я могу себе представить, это что-то не так, если вы назначаете переменные в глобальной области видимости после первого вызова функции. То есть ваша функция фактически объявляет переменные, а затем вы просто перезаписываете их в другом месте. Например, вызов Sum ()
и затем делает $ a = 1
, $ b = 2
.
Хочешь верь, хочешь нет, но я получу ответ: 2. Это означает, что действительно бывают случаи, когда глобальный не работает.
Попробовал найти причину: Похоже, что если у вас есть функция и вы поместили код операционной системы (пример php.net) внутри этой функции, вы получите ответ: 2. Это немного странно и в некотором роде имеет смысл...
(Я использую PHP 5.2.5 под Apache 2.2.8 в Win XP)
LE: МОЕ РЕШЕНИЕ Ладно, решено следующее: когда вы используете global во 2-й функции, вы, очевидно, получаете суперглобальные переменные, доступные всем (т.е. декалированные вне любой функции), но поскольку $a и $b объявлены внутри 1-й функции, то они не являются частью этой области и недоступны 2-й функции. Моя догадка для решения этой проблемы заключается в том, чтобы объявить $a и $b глобальными, также вне 2-ой функции, то есть внутри 1-ой функции. !! Обратите внимание, что 1-я функция может быть не так очевидна по разным причинам, например, ваш файл (содержащий только 2-ю функцию) включается где-то в тело другой функции в другом файле.