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

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

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

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

推薦する

HTML の ReadOnly と Enabled の違い

ReadOnly 属性を持つ TextBox は、クライアント上で次のマークアップとして表示されます...

HTML は CSS スタイルと JS スクリプトを動的に読み込みます。例

1. スクリプトを動的に読み込むウェブサイトの需要が高まるにつれて、スクリプトの需要も徐々に増加しま...

Dockerコンテナにホストディレクトリへの書き込み権限がない場合の解決策

Docker コンテナを適用する場合、多くの場合、ホスト ディレクトリを Docker コンテナにマ...

webkit-box-reflect を巧みに使用してさまざまな動的効果を実現する (要約)

かなり前の記事で、 -webkit-box-reflectプロパティについて説明しました。リフレクシ...

Linux でリモート MySQL データベースを手動で展開する方法の詳細な説明

1. mysql をインストールします。次のコマンドを実行して、YUM ソースを更新します。 rpm...

クリーンなコードのための Web デザインの 12 の法則 [グラフィック]

美しいコードは美しい Web サイトの基礎です。優れた CSS は、同様に優れた HTML の上にの...

Vueのコンポーネントのprops属性について詳しく説明します

目次質問1: 小道具は具体的にどのように使用されますか?原理は何ですか?下を見る質問 2: 年齢に ...

Vueは買い物数量を変更できるショッピングカートを実装します

この記事では、Vueを使用してショッピングカートの数量を変更する方法を紹介します。具体的な内容は次の...

geo モジュールを使用して Nginx でホワイトリストを設定する例

元の構成: http { ...... limit_conn_zone $binary_remote...

ESXI の仮想マシンにワークステーションをインストールするときに発生するネットワーク障害の解決策

問題の説明ESXI で Windows にワークステーションをインストールした後、内部の仮想マシンは...

MySQL の current_timestamp の落とし穴とその解決策を共有する

目次MySQL の current_timestamp の落とし穴エラーを報告する私の解決策mysq...

WeChatアプレットがシンプルな計算機機能を実装

この記事では、WeChatアプレットの計算機機能を実装するための具体的なコードを参考までに紹介します...

Dockerコマンドは一般ユーザーが実行できるように実装されている

dockerをインストールすると、通常はdockerユーザーグループが作成されます。ステップ2: 現...

MySQLの最適化の詳細な分析とパフォーマンス

導入データベースを使用したことがある人なら、機能面での like 記号と = 記号の類似点と相違点を...

HTML でフォーム入力やその他のテキスト ボックスを読み取り専用にして編集不可にする方法

場合によっては、フォーム内のテキスト ボックスを読み取り専用にして、ユーザーがその中の情報を変更でき...