0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WORDCLOUDをVIS.JSにマッピング

Last updated at Posted at 2022-07-06

前回は上記の挑戦をやってみた。
しかしながらCYTOSCAPE.jsにはどうしても解決できない問題があった

EDGE長さを数値で指定できない
・レイアウトCOSE → ×
・レイアウトCOLA → どうもうまくいかない

結果的にであるが、CYTOSCAPE.JSはやめることにして、VIS.JSに取り組んでいる。

ただしVIS.JSには、課題があって、NODEにSVGをマッピングすることができない。
(正確に言うと、REACT-COMPONENTの使い方が分からない・・・というのが正直なところ)

cytoscape.jsの場合

以下のように、COMPONENTにcy={(cy) => { myCyRef = cy; }を足すことで
DOMを直接触って参照できる。

sample.js
let myCyRef = null;

constructor(props) {
    super(props);
    this.state = {
      elements: {},
    }
  }

  componentDidMount() {
    const Cross = fetchCrossvalidData();
    this.setState({ elements: Cross });
  }

componentDidUpdate() {
    this.loadSVG();
    }

loadSVG() {
    this.state.elements.map((value, index, array) => {
      const params = { // some querying code was written here  // }
      const query = new URLSearchParams(params);
      fetch(
        apiurl+'/svg?'+query.toString()
      )
        .then(r => r.text())
        .then(data => {
          if(data.indexOf('<svg')>0)  //get some svg data
          {
          data=data.replaceAll('\\',"").slice(1).slice(0,-1);
          myCyRef.filter("node[id='" + value['data'].id + "']").css("background-image", "data:image/svg+xml;utf8," + encodeURIComponent(data));
          }
        }).catch(err => {
          console.log(err);
        });
    });
  }
render() {
    if (this.state.elements.length > 0 && this.state.crossvalid.length > 0) {
      
      return (
        <CytoscapeComponent cy={(cy) => { myCyRef = cy; }}
          stylesheet={styles}
          elements={this.state.elements}
          style={{ minWidth: "800", minHeight: "800px" }}
          layout={layout}
        />
      );
    } else {
      return <div className="App">
        Loading...Patent Data</div>
    }
  }

vis.jsの場合

出来ると言えばできるのであるが、REACTのコンポーネントになっていない。
HOOKを使えば出来るのかもしれないが、ソースが無いとコピペできない。

いまここでREACTの勉強中です。
(誰がCOMPONENTの作り方教えてください)

sample.js
    var nodes = new vis.DataSet([
      { id: 1, shape: "circularImage", image: "dummy.png" },
      { id: 2, shape: "circularImage", image: "dummy.png" },
    ]);

    network = new vis.Network(container, data, options);

    network.on("click", function(properties) {
          nodes.update({ id: properties.nodes[0], image: 'image.svg' });
        });
    });

mountain.png
man.png
woman.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?