Echarts バー水平棒グラフのサンプルコード

Echarts バー水平棒グラフのサンプルコード

前回の記事に引き続き#Echart Bar ヒストグラム風詳細説明、先に前回の記事を読んでいただいても構いません、読んでいなくても特に影響は大きくありません。

横棒グラフ

データとスタイルを動的に更新する

月次統計と日次統計の動的な切り替えを実現します。統計を月別に計算すると、各月のデータが表示され、X 軸には 12 個のラベルが表示されます。統計を日別に計算すると、X 軸にはすべてのラベルが完全には表示されず、間隔を置いて表示され、列の幅も変わります。主に使用されるメソッドは setOption メソッドです。

公式ドキュメント [setOption]: echarts.apache.org/zh/api.html…

<スクリプト>
  "ramda" から R として * をインポートします。

  定数ソース1 = [
    [「1月」、1330年、666、560]、
    [「2月」、820、760、660]、
    ......
    [「11月」、901、880、360]、
    [「12月」、934、600、700]、
  ];
  定数ソース2 = [
    ["1日", 1330, 666, 560],
    ["2番目", 820, 760, 660],
    ......
    ["29日", 934, 600, 700],
    ["30日", 1330, 666, 560],
  ];

  // 具体的な設定は前に示したとおりですが、詳細は省略し、基本的な例のみを示します。const initOption = {
    ...
    データセット: { ソース: source1 },
  };

  エクスポートデフォルト{
    データ() {
      戻る {
        チャート: null、
        isDaily: 偽、
      };
    },
    マウント() {
      this.charts = this.$echarts.init(
        document.getElementById("barCharts"),
        ヌル、
        {
          レンダラー: "svg",
        }
      );
      this.charts.setOption(R.clone(initOption));
    },
    メソッド: {
      ハンドルソース() {
        this.isDaily = !this.isDaily;
        this.charts.setOption(
          R.mergeDeepRight(initOption, {
            // データソースデータセットを動的に更新します: {
              ソース: this.isDaily ? ソース2: ソース1、
            },
            x軸:
              // ラベル間隔を動的に更新する axisLabel: {
                間隔: this.isDaily ? 4 : "auto",
              },
            },
            シリーズ: R.map(
              // 列幅を動的に更新する (o) => ((o.barWidth = this.isDaily ? 12 : 24), o),
              initOption.シリーズ
            )、
          })、
          真実
        );
        チャートのサイズを変更します。
      },
    },
  };
</スクリプト>

eChartsの幅と高さの適応の問題を解決する

Web プロジェクトでチャートを作成する場合、チャートの幅と高さは固定されておらず、ブラウザの幅と高さに適応する必要があります。使用される方法は、サイズ変更です。複数のグラフがある場合は、同時にサイズを変更する必要があります。

<スクリプト>
  エクスポートデフォルト{
    マウント() {
      window.addEventListener("サイズ変更", this.handleResize, false);
    },
    破壊された() {
      window.removeEventListener("サイズ変更", this.handleResize);
    },
    メソッド: {
      ハンドルサイズ変更() {
        _this は定数です。
        定数タイマー = setTimeout(() => {
          _this.lineCharts.resize();
          _this.barCharts.resize();
        }, 500);
        // タイマーをクリアします this.$once("hook:beforeDestroy", () => {
          タイマーを設定します。
        });
      },
    },
  };
</スクリプト>

縦棒グラフ

縦棒グラフの実装

本質は水平方向と同じで、x軸とy軸の値を置き換えるだけです。x軸は値、y軸はカテゴリです。

オプション = {
  x軸:
    タイプ: "値",
  },
  y軸: {
    タイプ:「カテゴリー」、
  },
};

座標インジケータの背景グラデーションカラー

実は原理は水平方向と同じで、グラデーションカラー処理領域のx値とy値が変更されます。

水平色を{
  タイプ: "線形"、
  x: 1, // 変更 y: 0,
  x2: 0,
  y2: 0, // colorStopsを変更: [
    { オフセット: 0、色: "rgba(234,244,255,1)" },
    { オフセット: 1、色: "rgba(234,244,255,0.3)" },
  ]、
  グローバル: false、
};

列ごとに異なる色を設定する

列のシリーズプロパティ設定の色は関数にすることができ、関数内で処理することができます。コアコードはcolorList[params.dataIndex]です

colorList = [ とします。
  "#1890ff",
  "#52c41a",
  "#faad14",
  "#f5222d",
  "#1DA57A",
  "#d9d9d9",
];
シリーズ = [
  {
    タイプ: "バー",
    バー幅: 16,
    アイテムスタイル: {
      // 異なる色の列を実現するためにカスタマイズされた表示(順序) color: (params) => {
        colorList[params.dataIndex]を返します。
      },
    },
    ディメンション: ["タイプ", "販売数量"],
  },
];

棒グラフの上に値を表示する

列のシリーズプロパティ設定のラベルは関数にすることができ、関数内で処理することができます。位置、フォントの色、サイズなどを設定できます。コアコードはparams.value[params.encode.x[0]]です。

シリーズ = [
  {
    // ......
    タイプ: "バー",
    ラベル: {
      // 列グラフのヘッダー表示値 show: true,
      位置: "右",
      色: "#333",
      フォントサイズ: "12px",
      フォーマッタ: (パラメータ) => {
        params.value[params.encode.x[0]]を返します。
      },
    },
  },
];

ツールチッププロンプトボックスのカスタマイズ

水平方向と同じですが、値params[0].axisValue、item.seriesName、item.value[item.encode.x[0]]に注意してください。

ツールチップを R.merge(tooltip, {
  フォーマッタ: 関数(パラメータ) {
    html = `<div style="height:auto;width:163px;">とします。
          <div style="font-size:14px;font-weight:bold;color:#333;margin-bottom:16px;line-height:1;">
            ${params[0].axisValue}
          </div>
          ${パラメータ
            。地図(
              (
                アイテム
              ) => `<div style="font-size:12px;color:#808080;margin-bottom:8px;display:flex;align-items:center;line-height:1;">
                <span style="display:inline-block;margin-right:8px;border-radius:6px;width:6px;height:6px;background-color:${
                  アイテムの色
                };"></span>
                ${item.seriesName}
                <span style="flex:1;text-align:right;">${
                  アイテム.値[アイテム.エンコード.x[0]]
                </span>
              </div>`
            )
            。参加する("")}
        </div>`;
    html を返します。
  },
});

全体的な実装

チャート.setOption({
  タイトル:
    テキスト:「販売数量分布」、
  },
  データセット:
    ソース: [
      [「アップル」、200]、
      [「ピーチ」、180]、
      [「ブドウ」、340]、
      [「バナナ」、250]、
      [「マンゴー」、166]、
      [「ドリアン」、185]、
    ]、
  },
  x軸: R.merge(y軸, {
    タイプ: "値",
  })、
  y軸: R.mergeDeepRight(x軸, {
    タイプ:「カテゴリー」、
    軸ポインタ:
      シャドウスタイル: {
        色: 水平色、
      },
    },
  })、
  シリーズ、
  ツールチップ、
});

要約する

Echarts Bar 水平棒グラフに関するこの記事はこれで終わりです。より関連性の高い Echarts Bar 水平棒グラフのコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。皆様が今後も 123WORDPRESS.COM を応援してくれることを願っています。

以下もご興味があるかもしれません:
  • jQueryプラグインEchartsで実装されたグラデーションカラーの棒グラフ
  • jQuery プラグイン echarts で実装された複数列の棒グラフ効果の例 [デモ ソース コードのダウンロード付き]
  • echartsが進捗バーに似た棒グラフに2つの値を表示する問題を解決します
  • 並列実装コードの代わりにecharts棒グラフの背景の重なり合う組み合わせ
  • Echarts 基本入門: 棒グラフと折れ線グラフの一般的な構成

<<:  VirtualBox での CentOS 8.1 仮想マシンのインストールを最小限に抑える詳細なチュートリアル

>>:  MySQL マスター スレーブ データが矛盾しています。プロンプト: Slave_SQL_Running: 解決策はありません

推薦する

JavaScript の基礎: 即時実行関数

目次関数フォーマットを即時実行関数を即座に実行する他の方法 – 式即時実行される関数はパラメータを取...

CSS 向け SASS スタイル プログラミング ガイド

SASS を使用する開発者が増えるにつれて、SASS コードの数に注意する必要があります。 SASS...

MySQLデータベースを使い始めるための最初のステップはテーブルを作成することです

データベースを作成する右クリック - 新しいデータベースを作成ライブラリ名を入力し、文字セットと並べ...

Linux 時間サブシステムの時間表現例の詳細な説明

序文Linux カーネルでは、元のコードとの互換性を保つため、または特定の仕様に準拠するため、また現...

HTML テーブルタグチュートリアル (17): テーブルタイトルの垂直配置属性 VALIGN

表のキャプションは表の上または下に配置でき、プロパティで調整できます。デフォルトのテーブル タイトル...

js タグ構文の使用法の詳細

目次1. ラベルステートメントの紹介2. ラベルステートメントの使用序文:日常の開発では、プログラム...

MySQL グリーンバージョン設定コードと 1067 エラーの詳細

MySQL グリーンバージョン設定コードと 1067 エラーMySQL エンコーディングを表示 &#...

HTMLでvueとel​​ement-uiを直接参照する方法

コードは次のようになります。 <!DOCTYPE html> <html> ...

インデックスを使用して数千万のデータを持つ MySQL のクエリ速度を最適化する

1. インデックスの役割一般的に言えば、インデックスは本の目次に相当します。条件に基づいてクエリを実...

Docker コンテナ入門から夢中になるまで(推奨)

1. Docker とは何ですか?仮想マシンについては誰もが知っています。Windows に Li...

Nginx Rewrite の使用シナリオとコード例の詳細な説明

Nginx Rewriteの使用シナリオ1. URL アドレスジャンプ。たとえば、ユーザーが pm....

Vueフィルターの詳細な説明

<本文> <div id="ルート"> <h2&...

Vue がルート変更を監視するときに watch メソッドが複数回実行される理由と解決策

目次要件の説明:要件分析:ニーズの解決問題解決私はフロントエンドの新人ですが、バックエンドのバグの中...

ReactにおけるRefの相互利用の詳細な説明

目次1. まずRefとは何かを説明しましょう2. フックでのrefの使用1. HTMLDomフックで...

docker で mysql に接続できない場合の解決策

シナリオ: 仮想マシンの Docker コンテナに最新バージョンの MySQL をインストールした後...