区分化されたヒートマップを作成する方法

ChrisBean

D3を使用して、古典的なヒートマップのデータ視覚化タイプを採用したいと思います...

ここに画像の説明を入力してください

..単一のデータソースからデータを描画するいくつかのヒートマップグループの区分化されたバージョンに。

ここに画像の説明を入力してください

技術的には、これは単一のソースからデータを取得する1つのヒートマップ要素である必要があります-分離、したがってクラスタリング/グループ化は、*。csvファイル(グループ1、グループ2、グループ3 ..)およびD3のデータを並べ替えることによって発生することになっています* .JSファイルがスタイリングを処理します。

単一のマップを生成している間:

    // Build X scales and axis:
    const x = d3.scaleBand()
    .range([0, width])
    .domain(myGroups)
    .padding(0.00);
    svg.append('g')
    .attr('transform', `translate(0,${height})`)
    .call(d3.axisBottom(x));

    // Build Y scales and axis:
    const y = d3.scaleBand()
    .range([height, 0])
    .domain(myVars)
    .padding(0.00);
    svg.append('g')
    .call(d3.axisLeft(y));

色の割り当て:

      // Assign color scale
    const myColor = d3.scaleLinear()
    .range(['red', '#750606'])
    .domain([1, 100]);

およびフェッチ(サンプル)データ:

// Read the data
d3.csv('https://raw.githubusercontent.com/holtzy/D3-graph-gallery/master/DATA/heatmap_data.csv', (data) => {
  data.sort(function(a, b) {
    return myVars.indexOf(b.variable) - myVars.indexOf(a.variable) || myGroups.indexOf(a.group) - myGroups.indexOf(b.group)
  });

魅力のように働いてきた:CodePen

上記のように、この基本構造を複数のグループの生成に拡張するのに苦労しています。配色を拡張し、異なる範囲をカバーするいくつかの追加のX軸とY軸を作成しようとすると、D3要素が完全に壊れて、マップがまったく表示できなくなります。

ヒートマップを壊さずに複数のヒートマップグループを生成する方法について、誰かが私を正しい方向に向けることができますか?

ChrisBean

行と列に基づく手順を使用してコンパートメントを構築し、コンパートメント化を解決することができました。

    // Dimensions
  const numCategoryCols = 4;
  const numCategoryRows = Math.ceil(grouped.length / numCategoryCols);
  const numEntryCols = 3;
  const numEntryRows = Math.ceil(grouped[0].values.length / numEntryCols);
  const gridSize = 20;
  const width = gridSize * numCategoryCols * numEntryCols;
  const height = gridSize * numCategoryRows * numEntryRows;
  const tooltipArrowSize = 8;

  // Containers
  const container = d3
    .select("#" + containerId)
    .classed("heatmap-grid", true)
    .style("position", "relative");
  const svg = container
    .append("svg")
    .style("display", "block")
    .style("width", "100%")
    .attr("viewBox", [0, 0, width, height])
    .style("opacity", 0); 

    svg.transition()
    .duration(3000)
    .delay((d,i) => i*200)
    .style("opacity", 1)

  // Heatmap
  const gCategory = svg
    .selectAll(".category-g")
    .data(grouped, (d) => d.key)
    .join("g")
    .attr("class", "category-g")
    .attr("fill", (d) => color(d.key))
    .attr("transform", (_, i) => {
      const y = Math.floor(i / numCategoryCols);
      const x = i % numCategoryCols;
      return `translate(${gridSize * numEntryCols * x},${
        gridSize * numEntryRows * y
      })`;
    });
  const gEntry = gCategory
    .selectAll(".entry-g")
    .data((d) => d.values)
    .join("g")
    .attr("class", "entry-g")
    .attr("transform", (_, i) => {
      const y = Math.floor(i / numEntryCols);
      const x = i % numEntryCols;
      return `translate(${gridSize * x},${gridSize * y})`;
    });
  const entry = gEntry
    .append("rect")
    .attr("width", gridSize)
    .attr("height", gridSize)
    .attr("fill-opacity", (d) => d.Severity / 100)
    .on("mouseenter", showTooltip)
    .on("mouseleave", hideTooltip);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

(x、y)の調整された順序でヒートマップを作成する

分類Dev

Bokehヒートマップでクリックされた位置のラベルを取得する方法

分類Dev

具体的な値でヒートマップを作成する方法

分類Dev

anglejsでヒートマップを作成する方法

分類Dev

ヒートマップヒートマップに追加の列を作成する方法

分類Dev

(x、y)値の色を保持するソートされたヒートマップのプロット

分類Dev

Pythonのグレースケールヒートマップからマルチカラーのしきい値処理された画像を作成する

分類Dev

散布図からかなり離れているように見えるPythonでプロットされたヒートマップを修正する方法

分類Dev

MATLABの座標で指定された値を使用してヒートマップを作成するにはどうすればよいですか?

分類Dev

HoloViewsは、補間されたカラフルなヒートマップを作成します

分類Dev

指定されたxy座標と値からRヒートマップを作成します

分類Dev

R-ggplot2で作成された相関ヒートマップ:y軸のラベルを反転するにはどうすればよいですか?

分類Dev

「vcd」で作成された関連プロットでp値をフォーマットする方法は?

分類Dev

Bokehを使用してヒートマップを適切に作成する方法

分類Dev

Winstonを使用してJuliaで極ヒートマップを作成する方法

分類Dev

グループ化されたデータからヒストグラムを作成する方法

分類Dev

r-図のようにヒートマップを作成する方法

分類Dev

Rのグループ化された列から単一のヒストグラムを作成する方法

分類Dev

ミラーリングされたヒストグラムを作成する方法

分類Dev

マップからソートされたベクトルを作成するC ++

分類Dev

Hibernateで動的に作成されたテーブルをマップする方法は?

分類Dev

Symfonyで「マップされた」仮想フィールドを作成する方法

分類Dev

pandasTimeSeriesを使用してヒートマップを作成する

分類Dev

分離された列を持つmatplotlibヒートマップ

分類Dev

複数のカラーマップでヒートマップを作成する方法は?

分類Dev

Pandas DataFrameからヒートマップを作成する

分類Dev

パンダでヒートマップを作成する

分類Dev

Rの地理的位置のヒートマップを作成する

分類Dev

Pythonで明確な巨大ヒートマップを作成する

Related 関連記事

  1. 1

    (x、y)の調整された順序でヒートマップを作成する

  2. 2

    Bokehヒートマップでクリックされた位置のラベルを取得する方法

  3. 3

    具体的な値でヒートマップを作成する方法

  4. 4

    anglejsでヒートマップを作成する方法

  5. 5

    ヒートマップヒートマップに追加の列を作成する方法

  6. 6

    (x、y)値の色を保持するソートされたヒートマップのプロット

  7. 7

    Pythonのグレースケールヒートマップからマルチカラーのしきい値処理された画像を作成する

  8. 8

    散布図からかなり離れているように見えるPythonでプロットされたヒートマップを修正する方法

  9. 9

    MATLABの座標で指定された値を使用してヒートマップを作成するにはどうすればよいですか?

  10. 10

    HoloViewsは、補間されたカラフルなヒートマップを作成します

  11. 11

    指定されたxy座標と値からRヒートマップを作成します

  12. 12

    R-ggplot2で作成された相関ヒートマップ:y軸のラベルを反転するにはどうすればよいですか?

  13. 13

    「vcd」で作成された関連プロットでp値をフォーマットする方法は?

  14. 14

    Bokehを使用してヒートマップを適切に作成する方法

  15. 15

    Winstonを使用してJuliaで極ヒートマップを作成する方法

  16. 16

    グループ化されたデータからヒストグラムを作成する方法

  17. 17

    r-図のようにヒートマップを作成する方法

  18. 18

    Rのグループ化された列から単一のヒストグラムを作成する方法

  19. 19

    ミラーリングされたヒストグラムを作成する方法

  20. 20

    マップからソートされたベクトルを作成するC ++

  21. 21

    Hibernateで動的に作成されたテーブルをマップする方法は?

  22. 22

    Symfonyで「マップされた」仮想フィールドを作成する方法

  23. 23

    pandasTimeSeriesを使用してヒートマップを作成する

  24. 24

    分離された列を持つmatplotlibヒートマップ

  25. 25

    複数のカラーマップでヒートマップを作成する方法は?

  26. 26

    Pandas DataFrameからヒートマップを作成する

  27. 27

    パンダでヒートマップを作成する

  28. 28

    Rの地理的位置のヒートマップを作成する

  29. 29

    Pythonで明確な巨大ヒートマップを作成する

ホットタグ

アーカイブ