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

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

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

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

推薦する

MySQL監視ツールmysql-monitorの詳細な説明

1. 概要mysql-monitor MYSQL 監視ツール、最適化ツール、1 つの Java Sp...

HTML テーブル マークアップ チュートリアル (18): テーブル ヘッダー

<br />ヘッダーはテーブルの最初の行を参照します。ヘッダー内のテキストは中央揃えで太...

MySQL 8.0 のインデックス スキップ スキャン

序文MySQL 8.0.13 では、インデックス スキップ スキャン (インデックス ジャンプ スキ...

MySQLからMariaDBへのスムーズな移行のための詳細な手順

1. MariaDB と MySQL の紹介1. MariaDB の紹介MariaDB は、MySQ...

HTMLエリアタグの詳しい説明

<area> タグは、イメージ マップ内の領域を定義します (注: イメージ マップはク...

Gojs がアリのラインアニメーション効果を実装

目次1. Gojsの実装1. 描画2. 破線の実装3. 点線を動かす2. 点線と点線アニメーションの...

MySQL 8.0 における MySQL のインストールと新しいパスワード認証方法の詳細な説明

1. はじめにOracle が MySQL 8.0GA をリリースしました。海外での GA はリリー...

SQLはROW_NUMBER() OVER関数を使用してシーケンス番号を生成します。

構文: ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY...

MySQL でタイムスタンプを日付に変換する例

序文職場で次のような状況に遭遇しました。ログ システムのテーブルでは、時間フィールドには日付データで...

Kylin V10 サーバーで Storm をコンパイルしてインストールする詳細なプロセス

1 はじめにApache Storm は、Hadoop と同様に、大量のデータを処理するために使用で...

WebプロジェクトのDockerデプロイメントの実装

前回の記事では、docker サービスをインストールしました。引き続き、Web プロジェクトのデプロ...

テーブルの幅を固定して、テキストによって幅が変わらないように設定

ページ内のテーブルの幅を width="600px" に設定した後も、幅が固定さ...

MySQL テーブル内の重複データを検索して削除する方法の概要

時々、データベース テーブルに重複したデータが大量に保存されます。これらの重複データはリソースを浪費...

CSS ハート型読み込みアニメーションのソースコードの実装

さっそく、コードをお見せしましょう。コードは非常にシンプルなので、勉強すれば理解できるようになります...

ins タグと del タグの属性と使用法

insとdel は、HTML 4.0 で導入され、文書の作成時に作成者が共同作業できるようにし、また...