Barista: 単䞀の積み䞊げ棒グラフ

䜜成日 2020幎04月16日  Â·  14コメント  Â·  ゜ヌス: dynatrace-oss/barista

機胜リク゚スト

抂芁

同じグルヌプの耇数の倀を衚瀺する氎平積み䞊げ棒グラフ

機胜の説明

  • 幅党䜓を埋めるスタック内のすべおの倀を衚瀺する
  • 凡䟋を衚瀺
  • セグメントごずに個別のオヌバヌレむを衚瀺する
  • 凡䟋をクリックするず、セグメントの1぀が無効になり、非衚瀺になり、グラフの残りの郚分が100を占めるようになりたす。
  • セグメントをクリックするず、それが遞択され、遞択色でペむントされ、遞択範囲が出力されたす。

添付ファむル

https://demo.dev.dynatracelabs.com/ui/user-sessions/-15832438029561I824BXYQV8TZOYSTZUSOXWK1WONTSJ6?gtf=2020-04%20to%202020-05&gf=all
image

feature has-pr new component

党おのコメント14件

@subarroca私は過去にそのようなコンポヌネントに぀いお䜕人かの人々ず話をしたした-それで、これはラむブラリぞの良い远加になるず思いたす。
実装を開始する前に、たずAPIプロポヌザルを䜜成しおください。

最初の考えず質問

  • 凡䟋はオプションである必芁がありたす
  • 凡䟋のバヌアむコンがここでは正しくない可胜性がありたす。
  • ツヌルチップは他のチャヌトず同様に機胜し、ng-templateで提䟛されるコンテキストを取埗する必芁がありたす。
  • すべおの芁玠を非衚瀺にできるわけではないこずを確認する必芁がありたす。垞に少なくずも1぀の芁玠が存圚する必芁がありたす。
  • 遞択色は䜕ですか 他のグラフず同じように、3぀を超える指暙がない限り、グラフはテヌマカラヌにする必芁がありたす。 遞択色はどこから来おいたすか テヌマにはありたせん。

これたでにこれで盎面した䞻な課題は、これが接続された方法で機胜する必芁があるこずですたずえば、テヌブル列で。
ここでの課題は、特定のメトリックが接続されおいるすべおのむンスタンスで同じ色になる必芁があるこずです。
行1は、metricA青、metricB赀、metricC黄色を瀺しおいたす。
行2の衚瀺metricA青、metricC黄色

これは、チャヌトを色付けする珟圚のシステムに察しお少し機胜したす。そのため、これにはただ問題がありたす。

同じメトリックを同じ方法で行に色付けするには、これを開発者に任せる必芁があるかもしれたせん。 単玔なナヌスケヌスず接続されたナヌスケヌスの自動カラヌリングは、シリヌズに色を蚭定する必芁がありたす。

<dt-single-stacked-bar
  [series]="series"
  [selected]="selected"
  (selectedChange)="onSelect($event)"
  valueDisplayMode="percent"
  [visibleLegend]="false"
  >
  <div dtSingleStackedBarOverlay>...</div>
</dt-single-stacked-bar>

入力

  • シリヌズDtSingleStackedBarNode[]衚瀺される情報のノヌド
  • 遞択枈み遞択するDtSingleStackedBarNodeノヌド
  • valueDisplayModeDtChartValueMode倀の衚瀺圢匏。 デフォルトDtChartValueMode.ABSOLUTE
  • visibleLegendブヌル倀のWether凡䟋を衚瀺するかどうか。 デフォルトtrue

出力

  • selectedChangeEventEmitter 遞択しDtSingleStackedBarNode

コンテンツプロゞェクション

  • dtSingleStackedBarOverlay

モデル

interface DtSingleStackedBarNode {
  label: string;
  value: number;
  color?: DtColors | string;
}
  • labelチャヌトに衚瀺されるラベル
  • 倀チャヌトに衚瀺される絶察数たたは盞察数
  • 色オプション。 割り圓おられた色を䞊曞きする必芁がある堎合は、ここで蚭定したす
export enum DtChartValueMode {
  ABSOLUTE = 'absolute',
  PERCENT = 'percent',
}

色

  • 3以䞋の堎合はテヌマに埓う必芁がありたす
  • 3぀以䞊の堎合は、䞀般的なチャヌトパレットに埓う必芁がありたす
  • ナヌザヌが1぀を指定するず、色が䞊曞きされたす
  • 遞択した色はタヌコむズである必芁がありたす

䌝説

  • 䞀般的な箇条曞きを衚瀺する必芁がありたす
  • ラベルず倀を衚瀺する必芁がありたす

未定

  • すべおのノヌドが無効になるずどうなりたすか

こんにちは@subarroca
これたでのずころ、APIの提案は良さそうです。 私が話したいこずがいく぀かありたす。

入力

visibleLegendboolean凡䟋を衚瀺するかどうか。 デフォルトtrue

SingleStackedBarChartをdt-legendに接続し、凡䟋がレンダリングされる堎所をコンシュヌマヌに定矩させるこずを怜蚎する必芁があるず思いたす。 テヌブル行内のSingleStackedBarChartのナヌスケヌスに぀いお考えおいたす。ここでは、テヌブル自䜓の最埌に、グラフの凡䟋が衚瀺されたす。
ただし、これにより、 https //github.com/dynatrace-oss/barista/issues/884#issuecomment -614602707で説明されおいるように、チャヌト間で必芁な通信が行われ、チャヌトのシリヌズず色が同期されたす。 回避策は、シリヌズがチャヌトの色に自動的に埓わないようにするこずですが、ナヌザヌがチャヌトの色を定矩できるようにしたす。

モデル

倀チャヌトに衚瀺される絶察数たたは盞察数

列挙型の代わりに、倀ずしお'percent' | 'absolute'の共甚䜓型を䜿甚しおください。

こんにちは@tomheller 提案にいく぀かの倉曎を加えお、より適切に適合させたした。
私はDtSingleStackedBarChartValueDisplayModeを䜿甚しおいたす。

export type DtSingleStackedBarChartValueDisplayMode =
  | 'none'
  | 'absolute'
  | 'percent';

これはあなたのために働きたすか、それずもあなたはタむプを持たないこずを奜みたすか

たた、 selectableを远加したした。これは、すべおの堎合に遞択可胜なグラフずしお䜿甚する必芁があるわけではないためです。

色はgetDtChartColorPaletteで自動的にフェッチされたすが、ノヌドに色がある堎合は、割り圓おられた色を䞊曞きするだけです。

凡䟋の䜿甚に぀いお。 それをテンプレヌトに入れたした。 それを接続する必芁がありたすか、それずも䜕らかの方法で凡䟋を公開する必芁がありたすか

これはあなたのために働きたすか、それずもあなたはタむプを持たないこずを奜みたすか

これは私にずっお完璧に機胜したす、+ 1

たた、すべおの堎合に遞択可胜なチャヌトずしお䜿甚したいわけではないため、遞択可胜なものを远加したした。

これは私にも有効です。コメントに倉曎を反映するこずもできたす。最新の単䞀の゜ヌスがここにありたすhttps://github.com/dynatrace-oss/barista/issues/884#issuecomment-614605963

凡䟋の䜿甚に぀いお。 それをテンプレヌトに入れたした。 それを接続する必芁がありたすか、それずも䜕らかの方法で凡䟋を公開する必芁がありたすか

私が蚀いたかったのは、耇数のグラフが1぀の凡䟋を共有できるずいうこずです。 そのため、グラフ自䜓に凡䟋を埋め蟌むこずはできないず思いたすが、このようなこずを行う必芁がありたす。 行が意味的に接続されおいる、テヌブルたたはその他の皮類の繰り返しデヌタ衚珟を想像しおみおください。

<dt-dummy-table>
  <dt-dummy-row *ngFor="let row of rows">
     <dt-single-stacked-bar [series]="row.series" legend="dummyTableLegend">
     </dt-single-stacked-bar>
  </dt-dummy-row>
</dt-dummy-table>
<dt-single-stacked-bar-legend #dummyTableLegend>
  <!-- ... ? -->
</dt-single-stacked-bar-legend>

このように、すべおの行内に凡䟋をレンダリングするのではなく、テヌブルの最埌に、すべおのシリヌズポむントを収集し、それらのアむコンずラベルを衚瀺する必芁がありたす。
これが、同じシリヌズのテヌブル内のすべおのチャヌトで同じ色である必芁があるため、チャヌトの色をチャヌトごずに自動的に取埗できない堎合がある理由です。 たずえば、行7で、1぀のシリヌズが欠萜しおいる堎合でも。

これが理解できるずいいのですが

はい、完党に理解できたす。 凡䟋を操䜜しお、グラフの芁玠を非衚瀺たたは衚瀺したいず思いたした。

しばらくしお定矩を曎新したす

<dt-single-stacked-bar
  [series]="series"
  [selected]="selected"
  (selectedChange)="onSelect($event)"
  valueDisplayMode="percent"
  [visibleLegend]="false"
  >
  <div dtSingleStackedBarOverlay>...</div>
</dt-single-stacked-bar>

入力

  • シリヌズDtSingleStackedBarChartNode[]衚瀺される情報のノヌド
  • 遞択枈み遞択するDtSingleStackedBarChartNodeノヌド
  • selectablebooleanチャヌトでの遞択を蚱可したす。 デフォルトfalse
  • valueDisplayModeDtSingleStackedBarChartValueDisplayMode倀の衚瀺圢匏。 デフォルト none
  • visibleLegendブヌル倀のWether凡䟋を衚瀺するかどうか。 デフォルトtrue

出力

  • selectedChangeEventEmitter 遞択しDtSingleStackedBarChartNode

コンテンツプロゞェクション

  • dtSingleStackedBarOverlay

モデル

interface DtSingleStackedBarChartNode {
  label: string;
  value: number;
  color?: DtColors | string;
}
  • labelチャヌトに衚瀺されるラベル
  • 倀チャヌトに衚瀺される絶察数たたは盞察数
  • 色オプション。 割り圓おられた色を䞊曞きする必芁がある堎合は、ここで蚭定したす
export type DtSingleStackedBarChartValueDisplayMode =
  | 'none'
  | 'absolute'
  | 'percent';

色

  • 3以䞋の堎合はテヌマに埓う必芁がありたす
  • 3぀以䞊の堎合は、䞀般的なチャヌトパレットに埓う必芁がありたす
  • ナヌザヌが1぀を指定するず、色が䞊曞きされたす
  • 遞択した色はタヌコむズである必芁がありたす

䌝説

  • 䞀般的な箇条曞きを衚瀺する必芁がありたす
  • ラベルず倀を衚瀺する必芁がありたす
  • クリックするずスラむスが非衚瀺になりたす
  • 最埌に衚瀺されたノヌドを非衚瀺にするこずはできたせん

たぶん、単䞀の積み䞊げ棒グラフの耇数のものを接続するこずを考える堎合、 max入力のようなものが圹立぀でしょう。 䜕も指定されおいない堎合は、パス系列の合蚈ずしお最倧倀を蚈算できたすが、耇数のパスがある堎合は、比范できるように同じスケヌルでそれらを䜿甚するこずをお勧めしたす。

これず倖郚の凡䟋は、おそらくすぐに取り組む必芁のあるものではありたせん。これは、埌で倉曎を加えるこずなくオプションずしお拡匵できるず思うからです。

提案の埌、このコンポヌネントは耇数のシリヌズで再利甚できる可胜性があるこずを考慮しお、アップグレヌドし、 singleずは呌ばないこずにしたした。 シングルはただの堎合です。

<dt-stacked-bar
  [series]="series"
  [selectable]="selectable"
  [(selected)]="selected"
  [valueDisplayMode]="valueDisplayMode"
  [direction]="direction"
  [labelPosition]="labelPosition"
  [legendPosition]="legendPosition"
  [legends]="legends"
  [fillMode]="fillMode"
  [maxBarSize]="maxBarSize"
  [max]="max"
  >
  <ng-template dtStackedBarChartOverlay let-tooltip>
    <strong>{{ tooltip.seriesOrigin.label }}</strong>
    <div>{{ tooltip.origin.label }}: {{ tooltip.origin.value }}</div>
  </ng-template>
</dt-stacked-bar>

入力

  • seriesDtStackedBarChartSeries[]衚瀺される䞀連の情報
  • selectablebooleanチャヌトでの遞択を蚱可したす。 デフォルトfalse
  • 遞択枈み[DtStackedBarChartSeries、DtStackedBarChartNode]遞択するシリヌズずノヌド。
  • valueDisplayModeDtStackedBarChartValueDisplayMode1぀のシリヌズのみが提䟛された堎合の倀の衚瀺圢匏。 デフォルト none
  • 方向DtStackedBarChartDirectionチャヌト内のバヌの方向。 デフォルト氎平
  • labelPositionDtStackedBarChartElementPositionバヌに関連するラベルの䜍眮。 デフォルト top
  • legendPositionDtStackedBarChartElementPosition凡䟋を衚瀺する堎所ず堎合。 デフォルト bottom
  • legendsDtStackedBarChartLegend[]バヌノヌドを切り替えるために䜿甚できる凡䟋の配列。 䜿甚される凡䟋がこのコンポヌネントの倖にある堎合に䟿利です
  • fillModeDtStackedBarChartFillMode各バヌを完党に埋める必芁があるか、兄匟ず最倧倀を考慮に入れる必芁があるか
  • maxBarSizenumberバヌの最倧サむズ。 デフォルト16
  • max数倀チャヌトの最倧倀

出力

  • selectedChangeEventEmitter <[DtStackedBarChartSeries、DtStackedBarChartNode]>遞択されDtStackedBarChartSeriesおよびDtStackedBarChartNode

コンテンツプロゞェクション

  • dtStackedBarOverlay

モデル

interface DtStackedBarChartSeries {
  label: string;
  nodes: DtStackedBarChartNode[];
}
  • labelチャヌトに衚瀺されるラベル
  • ノヌドチャヌトに衚瀺されるすべおのセグメント
interface DtStackedBarChartNode {
  label: string;
  value: number;
  color?: DtColors | string;
}
  • labelチャヌトに衚瀺されるラベル
  • 倀チャヌトに衚瀺される絶察数たたは盞察数
  • 色オプション。 割り圓おられた色を䞊曞きする必芁がある堎合は、ここで蚭定したす
interface DtStackedBarChartTooltipData {
  origin: DtStackedBarChartNode;
  seriesOrigin: DtStackedBarChartSeries;

  valueRelative: number;
  color: DtColors | string;
  visible: boolean;
  selected: boolean;
  length?: string;
}
  • series配列でナヌザヌから枡されたoriginノヌド
  • seriesOriginオリゞナルの芪シリヌズ
  • valueRelativeこのノヌドに基づく数倀のパヌセンテヌゞ倀ずトップレベルの合蚈
  • colorこの状態のこのノヌドの色
  • 衚瀺ノヌドが衚瀺されおいる堎合
  • 遞択枈みノヌドが珟圚遞択されおいる堎合
  • 凡䟋衚瀺されおいるノヌドのみを指定した堎合の珟圚の長さパヌセンテヌゞ
type DtStackedBarChartValueDisplayMode = 'none' | 'absolute' | 'percent';
type DtStackedBarChartElementPosition =
  | 'none'
  | 'top'
  | 'right'
  | 'bottom'
  | 'left';
type DtStackedBarChartFillMode = 'full' | 'relative';
type DtStackedBarChartDirection = 'horizontal' | 'vertical';

色

  • 3以䞋の堎合はテヌマに埓う必芁がありたす
  • 3぀以䞊の堎合は、䞀般的なチャヌトパレットに埓う必芁がありたす
  • ナヌザヌが1぀を指定するず、色が䞊曞きされたす
  • 遞択したセグメントはタヌコむズのハロヌを衚瀺する必芁がありたす

䌝説

  • 䞀般的な箇条曞きを衚瀺する必芁がありたす
  • ラベルず倀を衚瀺する必芁がありたす1぀のシリヌズのみの堎合
  • クリックするず、そのラベルに察応するノヌドが非衚瀺になりたす
  • 最埌に衚瀺されたノヌドを非衚瀺にするこずはできたせん
  • 倖郚である可胜性があり、芁玠を切り替えるこずができるはずです

こんにちは@subarroca
これは、棒グラフを拡匵するための倚倧な努力です。 考慮すべき点がいく぀かありたす。

暪棒/瞊棒vs棒グラフず瞊棒グラフ
グラフ䜜成では、垂盎棒グラフは通垞、瞊棒グラフず呌ばれたす。 この基準から逞脱したいかどうかはわかりたせん。 私は2぀のコンポヌネントdt-stacked-column-chartずdt-stacked-bar-chartを䜜成するこずを遞択したす。これらは、基本クラス、぀たりDtStackedBarColumnChartBaseを介しお内郚ロゞックのほずんどを共有できたす。

セレクタ
コンポヌネントが䜕を衚すかを明確にするために、セレクタヌ内に「チャヌト」ずいう単語を含めおください。

方向入力
それらを2぀のコンポヌネントに分割すれば、おそらくもう必芁ないでしょう。

labelPositionDtStackedBarChartElementPosition
おそらく、䞡方に適合し、瞊棒グラフず棒グラフに等しく適甚できるタむプを芋぀けるこずができたす。 å·Š/右は瞊棒グラフではあたり意味がなく、䞊/䞋は棒グラフではあたり意味がないので、 start | endのようなもので行くこずができたすか

legendPositionDtStackedBarChartElementPosition
私はこれを珟圚のレベルで削陀し、凡䟋の固定䜍眮を提䟛するこずを遞択したす。 珟時点では、ポゞションを定矩するためのメリットやナヌスケヌスは芋圓たりたせん。 珟圚のずころ、棒グラフ/瞊棒グラフのすべおの凡䟋はグラフの䞋にありたす。

maxBarSize数倀
これは単䞀の列/バヌのmaxWidthを指しおいるず思いたす。おそらく、これを別の名前、぀たりmaxTrackSizeで列ずバヌの間で共有する方法を芋぀けるこずができたす。

今埌の怜蚎事項

API提案には、軞、軞ラベル、目盛り、サむズに関する情報は含たれおいたせん。 埌で远加のステップでそれを行うこずができるず思いたす。

考慮事項

これは非垞に倧きなコンポヌネントのように思われるので、これを分割しお、開始するための最小限の実行可胜な補品を定矩するこずは実行可胜だず思いたす。 そうでなければ、私はこれがかなり長い時間がかかるのを芋たす。 この@ffriedl89@subarrocaに぀いおどう思いたすか

やあ

たず第䞀に、私が提案したこずはすべおすでに行われおいるので、テストを陀いおこれを行うのにそれほど時間はかかりたせん

セレクタ
名前にはすでに「チャヌト」が含たれおいたすが、ここで忘れおしたいたした。

棒グラフ/瞊棒グラフに぀いお
実際のずころ、これは1぀のテンプレヌトで1぀のコンポヌネントですでに行われおおり、グリッドレむアりトず芁玠の配眮を䜿甚しおいるため、個別のコンポヌネントのアプロヌチは䜿甚したせん。 directionの名前をtype: 'bar' | 'column'に倉曎できたす

ラベルの䜍眮
UXの詊甚版をいく぀か瀺したずき、棒グラフの巊偎にラベルを付けるこずができるず提案されたので、䞊、䞋、巊、右だけで画像が完成したように芋えたしたが、あたり圹に立ちたせん。 右ず巊を取り陀くこずができるかどうかを確認するために圌らず話をしたす

凡䟋の䜍眮
簡単に取り倖し可胜

maxBarSize
名前をbar|columnに倉曎するず、提案どおりに名前を倉曎するのが理にかなっおいたす。

軞
瞊棒グラフのx軞線が機胜しおいたす。 どういうわけか「valueAxis」を远加する必芁があるず思いたしたが、次のフェヌズでは、これが元の制限をはるかに超えお成長し、簡単に远加できるようになるず考えおいたした。

988で閉鎖

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡