Bubbleでプラグインを使わずに横棒グラフを作る方法

著者:大熊滉希
ノーコード特化のアプリ/システム開発事業を展開するEPICsの代表。
前職にて新規事業コンサルティングを行う企業で役員を歴任した後、
最小の経営資源で開発を行えるノーコードに可能性を感じEPICsを創業。

運営会社:EPICs株式会社
日本最大級の開発実績を誇るノーコード特化のアプリ/システム開発会社。
最安30万円・最短2週間から、BubbleやAdaloなど多様なツールの中からニーズに合わせた最適な開発を提案・実施している。Adalo公認エキスパートも在籍。

ノーコードツールBubbleでプラグインを使わずにオリジナルの横棒グラフを作る方法をご紹介。

プラグインを使うと簡単に縦横グラフのほか、円グラフなども実装できますが、デザインを柔軟にカスタマイズするのは厳しいです。デザイナーが制作したデザインをBubbleで忠実に再現して実装するにはオリジナルでグラフを作る考え方を知っておくべきでしょう。

この記事では、以下に当てはまる方向けのTipsを解説します。

  • Bubbleでプラグインを使わずに横棒グラフを実装する方法が知りたい!
  • RepeatingGroup内のShapeエレメントの横幅(Width)を動的に変更する方法(Insert dynamic dataや全体に対する割合を使って)が分からなくて困っている…

なお、ノーコードBubbleの概要については以下の記事で解説しています。

【公認代理店が解説】ノーコードツールBubbleとは?使い方やデメリット、料金を解説

目次
無料で資料をダウンロード

ノーコード開発お役立ち資料3点セット

計100ページ近い大ボリュームでノーコード開発について解説

  • ノーコード開発会社の選び方
  • EPICsのノーコード受託開発の特徴
  • 支援実績・事例集

    氏名

    法人名

    メールアドレス

    電話番号

    送信ボタンを押すことで、個人情報の取扱いについてに同意したとみなされます

    実装イメージ

    今回紹介する記事の内容を習得すれば、添付のような横棒グラフを自作することができるようになります。

    イメージとしては以下を想定したサンプルです。

    投票画面でユーザーが投票選択肢の中から1つを選んで投票を行う。

    投票集計結果が添付の横棒グラフに表示される。グラフに表示するのは投票数ではなく全体に対する割合。

    自作の横棒グラフをBubbleで実装する手順

    以下の手順で実装します。

    1. 横棒グラフのデザインをBubbleに落とし込む
    2. RepeatingGroupの設定をする
    3. 投票割合を表示する
    4. Shapeエレメントで作ったグラフの横棒の横幅を動的に変更する

    まずはデザイナーが作った横棒グラフのデザインを、Bubbleにて忠実に再現するところからです。一度ベタ打ちでデザインを落とし込めたらその後にRepeatingGroup内に入れてRGの設定をしていく流れ。

    最も注目していただきたいのは④。BubbleのLayoutタブからはエレメントのWidthやHeightを現状では動的に変更できません。それを可能にするのが④で紹介するテクニックです。今回の記事は④を皆さんに共有したくて筆をとったと言っても過言ではありません(笑)。

    横棒グラフのデザインをBubbleに落とし込む

    上記の横棒グラフのデザインは、Groupエレメント内に3つのエレメント(Shape、Text、Text)をAlign to parentで配置することでキレイに再現できます。

    完成形のエレメントツリーは添付の通り!

    BubbleではGroup内の要素の重なり順(z-index)は先頭の要素が後ろに配置されるので、ShapeエレメントをGroup内で先頭に持ってきているのもプチポイントです。そうしないと、TextエレメントがShapeに隠れてしまうので。

    Shapeエレメントの横幅は後ほど動的に変更するので何も指定しません。Align to parentの位置は真ん中左にします。

    グラフ右端に表示させる割合のTextエレメントは、Align to parentの位置を真ん中右にします。

    グラフの投票選択肢のTextエレメントはAlign to parentの位置を横棒と同様に真ん中左にしますが、左余白を設けたいので、Padding Leftで調整します。

    RepeatingGroupの設定をする

    横棒グラフ単体のデザインが再現できたら、次にRepeatingGroupの中に移動させましょう。

    RepeatingGroupのType of contentやData sourceはご自身のプロジェクトに合わせて設定していただきたいので詳細は割愛させていただきますが、一例としてサンプルでは添付のように構築しております。

    上のDo a Search forで指定しているData Type「Vote Count」には、selectionというtext型のフィールドと、voteというData Type「Vote」のリレーションを設定しています。

    ※上のキャプチャではType of contentがGroupingになっていますが、これは:grouped byを使用すると自動でGroupingになります。

    横棒グラフのデータベースのイメージ

    ユーザーが投票する(Create Vote)際に、選んだ投票選択肢の内容を「Vote Count」のselectionに保存するので、その文言と票数を使って横棒グラフに投票結果を表示するイメージです。

    投票割合を表示する

    次に各横棒グラフの右端に表示する投票割合の表示を実装します。

    添付のように、各投票数を全体の投票数で割った値に100をかけ、floorで小数点を切り捨てたあとに末尾に%表記をつけてあげればOK。

    Shapeエレメントで作ったグラフの横棒の横幅を動的に変更する

    仕上げです。横棒の横幅は全体に対する投票割合によって動的に拡大縮小させます!

    めっちゃ重要!

    まず、横幅を動的に変更させたいエレメント(今回はShapeエレメント)のID Attribute欄にInsert dynamic dataのCurrent cell’s indexを使い、idを付与します。このように設定することで各Shapeエレメントには以下のようにidがふられます。

    ・bar-chart-1
    ・bar-chart-2
    ・bar-chart-3



    ・bar-chart-10

    そして、該当のRepeatingGroup内に、HTMLエレメントを設置し、以下のようなCSSを書きます。

    <style>
    #bar-chart-Current cell's index {
      width: ((各投票数 / 全体の投票数) * 100):floor %!important;
    }
    </style>

    このCSSを書くことで、上記でidを割り当てた各Shapeエレメントのwidthを、全体に対する投票割合で%指定することができます。※添付画像の青文字はBubbleのInsert dynamic dataで入れてください。

    これで実装は一通り完了です!お疲れ様でした!

    【日本最大級のノーコード開発実績】
    無料でアプリ・システム開発の相談を受付中

      氏名

      法人名

      メールアドレス

      電話番号

      お問い合わせ詳細 ※分かる範囲でご記入ください

      送信ボタンを押すことで、個人情報の取扱いについてに同意したとみなされます

      「勉強になった!」「役に立った!」と思っていただけたら、是非シェアもお願いします!
      目次