ミニプログラムでマインドマップを描く方法

ミニプログラムでマインドマップを描く方法

マインドマップとは何ですか?

マインド マップ (英語: mind map) は、脳マップ、メンタル マップ、ブレーンストーミング マップ、マインド マップ、インスピレーション誘発マップ、コンセプト マップ、または思考マップとも呼ばれ、情報を画像で整理するグラフィックです。中心となるキーワードまたはアイデアを使用して、すべての代表的な単語、アイデア、タスク、またはその他の関連項目を放射状の線で接続します。紹介、目に見える視覚化、システム構築、分類など、さまざまな方法で人々のアイデアを表現できます。研究、組織化、問題解決、政策立案などでよく使用されます。ウィキペディア

マインドマッピングは、1970 年代にイギリスのトニー・ブザンによって提唱された思考ツールです。ターゲットトピックを中心ノードとして、関連性が継続的に外側に拡張され、分解および探索され、最終的に完全なツリー図が形成されます。具体的な操作プロセスの観点からは、各関連付けの結果を完全に記録する探索プロセスの可視化としても理解できます。この形式は人々の考え方に沿ったものであり、最終的な絵は主題についてのより具体的で全体的な理解も与えてくれます。

マインド マッピングは思考に重点を置いており、私たちの通常の活動は思考と切り離せないため、マインド マッピングの使用シナリオは非常に多岐にわたります。例えば、要約、レポートのプレゼンテーション、ブレインストーミングなど。これを実装するために必要なのはペンと紙だけですが、図の作成をサポートできるさまざまなオンライン アプリケーションやスタンドアロン アプリケーションもあります。製品でトピックに関する関連情報を複数のレイヤーで表示する必要がある場合は、マインド マップを使用できます。 F6 は、上の写真のような効果で、ミニプログラムでマインドマップを簡単に描くことができます。関連するニーズを持つ学生は試してみる価値があります。

F6で描く方法

デモの例については、f6.antv.vision/zh/docs/exa… を参照してください。

このセクションのコードはオープンソース化されています。ご興味があれば、ぜひご覧ください。

Alipaygithub.com/antvis/F6/t…

WeChatgithub.com/antvis/F6/t…

アリペイ

最初のインストール

インストール @antv/f6 @antv/f6-alipay -S

データ

エクスポートデフォルト{
  id: 'モデリング方法'、
  子供たち: [
    {
      id: '分類',
      子供たち: [
        {
          id: 'ロジスティック回帰'、
        },
        {
          id: '線形判別分析'、
        },
        {
          id: 'ルール',
        },
        {
          id: '決定木'、
        },
        {
          id: 'ナイーブベイズ'、
        },
        {
          id: 'K 近傍'、
        },
        {
          id: '確率的ニューラルネットワーク'、
        },
        {
          id: 'サポートベクターマシン',
        },
      ]、
    },
    {
      id: 'コンセンサス'、
      子供たち: [
        {
          id: 「多様性をモデル化する」
          子供たち: [
            {
              id: '異なる初期化'、
            },
            {
              id: '異なるパラメータの選択',
            },
            {
              id: '異なるアーキテクチャ'、
            },
            {
              id: 'さまざまなモデリング方法'、
            },
            {
              id: '異なるトレーニング セット'、
            },
            {
              id: '異なる機能セット'、
            },
          ]、
        },
        {
          id: 'メソッド',
          子供たち: [
            {
              id: '分類子の選択',
            },
            {
              id: '分類子の融合',
            },
          ]、
        },
        {
          id: '共通',
          子供たち: [
            {
              id: 'バギング'、
            },
            {
              id: 'ブースティング',
            },
            {
              id: 'AdaBoost',
            },
          ]、
        },
      ]、
    },
    {
      id: '回帰'、
      子供たち: [
        {
          id: '多重線形回帰'、
        },
        {
          id: '部分最小二乗法',
        },
        {
          id: 「多層フィードフォワードニューラルネットワーク」、
        },
        {
          id: '一般回帰ニューラルネットワーク'、
        },
        {
          id: 'サポートベクター回帰',
        },
      ]、
    },
  ]、
};

インデックス

{
  "defaultTitle": "マインドマップ",
  "コンポーネントの使用": {
    "f6-canvas": "@antv/f6-alipay/es/container/container"
  }
}

インデックス

'@antv/f6' から F6 をインポートします。
'@antv/f6/dist/extends/graph/treeGraph' から TreeGraph をインポートします。
'../../../common/utils/context' から { wrapContext } をインポートします。

'./data' からデータをインポートします。

/**
 * マインドマップ - ノードを両側に自動的に分配します*/

ページ({
  キャンバス: null、
  ctx: null、
  renderer: '', // mini、mini-native など、F6 で必要、環境をマーク isCanvasInit: false, // キャンバスは準備ができていますか? graph: null,

  データ: {
    幅: 375,
    高さ: 600,
    ピクセル比: 2,
    強制ミニ: 偽、
  },

  オンロード() {
    // カスタム ツリー、ノードなどを登録します。F6.registerGraph('TreeGraph', TreeGraph);

    // ウィンドウの幅と高さを同期的に取得します。const { windowWidth, windowHeight, PixelRatio } = my.getSystemInfoSync();

    this.setData({
      幅: ウィンドウ幅、
      高さ: ウィンドウの高さ、
      ピクセル比、
    });
  },

  /**
   * cnavasコールバックを初期化し、取得したコンテキストをキャッシュする
   * @param {*} ctx 描画コンテキスト
   * @param {*} rect の幅と高さの情報 * @param {*} canvas キャンバスオブジェクト、レンダリングが mini の場合は null
   * @param {*} レンダラーはキャンバス 1.0 またはキャンバス 2.0、mini | mini-native を使用します
   */
  handleInit(ctx, rect, キャンバス, レンダラー) {
    true を返します。
    this.ctx = wrapContext(ctx);
    this.renderer = レンダラー;
    this.canvas = キャンバス;
    this.updateChart();
  },

  /**
   * キャンバスによってディスパッチされたイベントはグラフインスタンスに転送されます*/
  ハンドルタッチ(e) {
    this.graph && this.graph.emitEvent(e);
  },

  チャートを更新します(){
    const { 幅、高さ、ピクセル比 } = this.data;

    // F6インスタンスを作成する this.graph = new F6.TreeGraph({
      コンテキスト: this.ctx、
      レンダラー: this.renderer、
      幅、
      身長、
      ピクセル比、
      fitView: true、
      モード:
        デフォルト: [
          {
            タイプ: '折りたたみ-展開'、
            onChange: 関数 onChange(item, 折りたたまれた) {
              定数モデル = item.getModel();
              model.collapsed = 折りたたまれている;
              true を返します。
            },
          },
          「ドラッグキャンバス」、
          「ズームキャンバス」、
        ]、
      },
      デフォルトノード: {
        サイズ: 26,
        アンカーポイント: [
          [0, 0.5],
          [1, 0.5],
        ]、
      },
      デフォルトエッジ: {
        タイプ: 'cubic-horizo​​ntal'、
      },
      レイアウト:
        タイプ: 'マインドマップ'、
        方向: 'H'、
        getHeight: 関数 getHeight() {
          16を返します。
        },
        getWidth: 関数 getWidth() {
          16を返します。
        },
        getVGap: 関数 getVGap() {
          10 を返します。
        },
        getHGap: 関数 getHGap() {
          50を返します。
        },
      },
    });
    centerX = 0 とします。
    this.graph.node(function(node) {
      if (node.id === 'モデリング方法') {
        中心X = ノード.x;
      }

      // 位置の値(ESlint はネストされた三項式を禁止しているため、抽出されて別々に記述されます)
      position_value を null にします。
      (ノードの子とノードの子の長さ>0)の場合{
        position_value = '左';
      } そうでない場合 (node.x > centerX) position_value = 'right';
      そうでない場合は、position_value = 'left';

      戻る {
        ラベル: node.id,
        ラベル設定: {
          オフセット: 5,
          位置: 位置値、
        },
      };
    });

    this.graph.data(データ);
    this.graph.render();
    グラフにフィットするビューを作成します。
  },
});

インデックス.axml

<f6-キャンバス
  幅="{{幅}}"
  高さ="{{高さ}}"
  フォースミニ="{{フォースミニ}}"
  ピクセル比="{{ピクセル比}}"
  onTouchEvent="handleTouch"
  onInit="handleInit"
</f6-キャンバス>

微信

最初のインストール

npm インストール @antv/f6-wx -S

@antv/f6-wx WeChat は npm パッケージにあまり対応していないため、ユーザーの操作を簡素化するために @antv/f6-wx をパッケージ化しました。​

データ

同上

インデックス

{
  "defaultTitle": "マインドマップ",
  "コンポーネントの使用": {
    "f6-canvas": "@antv/f6-wx/canvas/canvas"
  }
}

インデックス.wxml

<f6-キャンバス
  幅="{{幅}}"
  高さ="{{高さ}}"
  フォースミニ="{{フォースミニ}}"
  ピクセル比="{{ピクセル比}}"
  バインド:onTouchEvent="handleTouch"
  バインド:onInit="handleInit"
</f6-キャンバス>

インデックス

'@antv/f6-wx' から F6 をインポートします。
'@antv/f6-wx/extends/graph/treeGraph' から TreeGraph をインポートします。


'./data' からデータをインポートします。

/**
 * マインドマップ - ノードを両側に自動的に分配します*/

ページ({
  キャンバス: null、
  ctx: null、
  renderer: '', // mini、mini-native など、F6 で必要、環境をマーク isCanvasInit: false, // キャンバスは準備ができていますか? graph: null,

  データ: {
    幅: 375,
    高さ: 600,
    ピクセル比: 1,
    強制ミニ: 偽、
  },

  オンロード() {
    // カスタム ツリー、ノードなどを登録します。F6.registerGraph('TreeGraph', TreeGraph);

    // ウィンドウの幅と高さを同期的に取得します。const { windowWidth, windowHeight, PixelRatio } = wx.getSystemInfoSync();

    this.setData({
      幅: ウィンドウ幅、
      高さ: ウィンドウの高さ、
      // ピクセル比、
    });
  },

  /**
   * cnavasコールバックを初期化し、取得したコンテキストをキャッシュする
   * @param {*} ctx 描画コンテキスト
   * @param {*} rect の幅と高さの情報 * @param {*} canvas キャンバスオブジェクト、レンダリングが mini の場合は null
   * @param {*} レンダラーはキャンバス 1.0 またはキャンバス 2.0、mini | mini-native を使用します
   */
  handleInit(イベント) {
    const {ctx、rect、canvas、renderer} = イベント.detail
    true を返します。
    this.ctx = ctx;
    this.renderer = レンダラー;
    this.canvas = キャンバス;
    this.updateChart();
  },

  /**
   * キャンバスによってディスパッチされたイベントはグラフインスタンスに転送されます*/
  ハンドルタッチ(e) {
    this.graph && this.graph.emitEvent(e.detail);
  },

  チャートを更新します(){
    const { 幅、高さ、ピクセル比 } = this.data;

    // F6インスタンスを作成する this.graph = new F6.TreeGraph({
      コンテキスト: this.ctx、
      レンダラー: this.renderer、
      幅、
      身長、
      ピクセル比、
      fitView: true、
      モード:
        デフォルト: [
          {
            タイプ: '折りたたみ-展開'、
            onChange: 関数 onChange(item, 折りたたまれた) {
              定数モデル = item.getModel();
              model.collapsed = 折りたたまれている;
              true を返します。
            },
          },
          「ドラッグキャンバス」、
          「ズームキャンバス」、
        ]、
      },
      デフォルトノード: {
        サイズ: 26,
        アンカーポイント: [
          [0, 0.5],
          [1, 0.5],
        ]、
      },
      デフォルトエッジ: {
        タイプ: 'cubic-horizo​​ntal'、
      },
      レイアウト:
        タイプ: 'マインドマップ'、
        方向: 'H'、
        getHeight: 関数 getHeight() {
          16を返します。
        },
        getWidth: 関数 getWidth() {
          16を返します。
        },
        getVGap: 関数 getVGap() {
          10 を返します。
        },
        getHGap: 関数 getHGap() {
          50を返します。
        },
      },
    });
    centerX = 0 とします。
    this.graph.node(function(node) {
      if (node.id === 'モデリング方法') {
        中心X = ノード.x;
      }

      // 位置の値(ESlint はネストされた三項式を禁止しているため、抽出されて別々に記述されます)
      position_value を null にします。
      (ノードの子とノードの子の長さ>0)の場合{
        position_value = '左';
      } そうでない場合 (node.x > centerX) position_value = 'right';
      そうでない場合は、position_value = 'left';

      戻る {
        ラベル: node.id,
        ラベル設定: {
          オフセット: 5,
          位置: 位置値、
        },
      };
    });

    this.graph.data(データ);
    this.graph.render();
    グラフにフィットするビューを作成します。
  },
});

要約する

ミニプログラムでマインドマップを描く方法についての記事はこれで終わりです。ミニプログラムでマインドマップを描く方法についてのさらなる内容については、123WORDPRESS.COM で過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  SeataがMySQL 8バージョンを使用できない問題を解決する方法

>>:  Docker を使用して MySQL および Redis サービスをデプロイする方法

推薦する

Angularルーティングアニメーションと高度なアニメーション機能の詳細な説明

目次1. ルーティングアニメーション2. グループクエリとスタガー1. ルーティングアニメーションル...

トラフィックの多いウェブサイト向けのソリューション

まず、サーバーのハードウェアが現在のトラフィックをサポートするのに十分かどうかを確認します。通常の ...

jsとcssのブロッキング問題の詳細な分析

目次DOMContentLoadedとロードjs ブロッキングとは何ですか? CSS ブロッキングと...

Vue.jsの機能コンポーネントに関する包括的な理解

目次序文React 関数コンポーネントVue (2.x) の機能コンポーネント🌰 例: el-tab...

MySQL エラー 1290 (HY000) の解決方法

私は長い間問題に取り組み、文法上の問題を何度も確認しました。しかし、後でネットで調べてみたら、突然理...

MySQL 8.0.23 のインストールと設定方法のグラフィックチュートリアル (Win10 の場合)

この記事では、MySQL 8.0.23のインストールと設定方法を参考までに紹介します。具体的な内容は...

Linux ソースコードからのソケット (TCP) バインドの詳細な説明

目次1. 最も単純なサーバー側の例2. バインドシステムコール2.1、inet_bind 2.2、i...

16 の XHTML1.0 と HTML の互換性ガイドラインの概要

1.ページを XML タイプとして宣言しないでください。ページでは UTF-8 または UTF-16...

Flex モバイルレイアウトにおけるシングルラインレイアウトとダブルラインレイアウトの違いと使い方

レイアウトにul>liを使用した単一行レイアウトを以下に示します。 <ul class=...

Vue における $router と $route の違いの詳細な説明

通常、vue プロジェクトではルーティングを使用します。vue-router は vue.js の公...

Linuxのテキスト処理コマンドsortの詳細な説明

テキストファイルの内容を並べ替える使用方法: ソート + オプション + ファイル名 (複数のファイ...

MySQL トランザクション自動コミット自動コミット操作

MySQL のデフォルトの動作モードは自動コミット モードです。つまり、明示的にトランザクションを開...

フロントエンドに必要なNginx設定の詳細な説明

Nginx (エンジン x) は、軽量で高性能な HTTP およびリバース プロキシ サーバーであり...

CSS マージンの重複とその防止方法

2 つ以上のブロックレベル ボックスの垂直に隣接するエッジが重なり合っています。結果として得られる境...

Vueページの画像が表示されない問題の解決方法

新しいバージョンの設定インターフェースを作る際に、vueフレームワークを使用して実装しました。ページ...