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

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

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

マインド マップ (英語: 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 サービスをデプロイする方法

推薦する

CSSカウンター関連属性の学習の詳細な説明

CSS カウンター属性はほぼすべてのブラウザ (IE8 を含む) でサポートされていますが、あまり使...

MySQLでグローバル変数とセッション変数を設定する2つの方法の詳細な説明

1. MySQL でグローバル変数を変更するには 2 つの方法があります。方法 1: my.ini ...

ウェブサイトのハイパーリンクを開く方法に関する議論

新しいウィンドウが開きます。 利点: ユーザーがリンクをクリックしても、現在閲覧しているコンテンツは...

CentOS7 ファイアウォール操作コマンドの完全なリスト

目次インストール: 1. ファイアウォールの基本的な使い方2. ファイアウォールd-cmdを設定する...

Zabbix ベースの Jenkins プロセス監視の詳細な説明

1. 監視アーキテクチャ図 2. 実装のアイデアJenkins に Metrics プラグインをイン...

CSSアニメーション属性キーフレームの詳細な説明

コラムを更新してからどれくらい経ったでしょうか?半年ですか?今年の後半は、まさに離陸、つまり文字通り...

Docker での Jenkins と Docker を使用した継続的デリバリー

1. 継続的デリバリーとは何かソフトウェア製品の出力プロセスは、ソフトウェアがいつでもリリースできる...

MySQLパーティションテーブルは月別に分類されています

目次テーブルを作成するデータベース ファイルを表示します。入れるクエリ消去補足:Mysqlは月テーブ...

React Diff Principle の詳細な分析

目次差分アルゴリズムレイヤーごとの比較同じタイプのコンポーネントを比較する同じタイプの要素の比較子ノ...

MySQL 5.7.24 のインストールと設定方法のグラフィックチュートリアル

MySQL は最も人気のあるリレーショナル データベース管理システムです。WEB アプリケーションに...

Vue-routerルーティングの使い方

目次1. 説明2. インストール3. テスト1. 説明Vue Router は、Vue.js の公式...

2 つの Linux サーバー間の自動ファイル同期

サーバーB(172.17.166.11)の電源がオンまたは再起動されると、サーバーA(172.17....

Linux の運用と保守で netstat の代わりに ss コマンドを使用する方法

序文Linux サーバーを操作および管理するときに、最もよく使用されるコマンドの 1 つが nets...

CentOS7 カーネル カーネル5.0 バージョンアップグレード

アップグレードプロセス:元のシステム: CentOS7.3 [root@my-e450 ~]# un...

MySQL 5.7 における部分テーブルのデュアルマスター同期の実装プロセスの詳細な説明

序文最近、私はある要件に遭遇しました。会社の業務上、2 つのデータベース間の一部のテーブルは、リアル...