技術共有

bqplot チュートリアル: Jupyter Notebook での対話型データ視覚化

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

記事ディレクトリ

導入

1.1 データ視覚化の重要性

データの視覚化とは、データをグラフィックの形式で表示し、データの背後にある情報とパターンをより直観的かつ迅速に理解できるようにすることです。今日の情報爆発の時代では、次の理由からデータの視覚化が特に重要です。

  • 理解効率の向上 : グラフィック データは、プレーン テキストや数値よりも脳にとって理解しやすく、記憶しやすいです。チャートを通じて、人々はデータの重要なポイントを素早く把握し、より多くの情報に基づいた意思決定を行うことができます。
  • データパターンを明らかにする : データの視覚化は、データ内の隠れたパターン、傾向、外れ値を発見するのに役立ちます。たとえば、折れ線グラフでは、時間の経過とともにデータがどのように変化するかを明確に確認できます。
  • コミュニケーション効果を高める : ビジネス、科学研究、教育などの分野では、データの視覚化は複雑な情報を伝達するための強力なツールです。データ分析結果を他の人が理解し、受け入れやすくします。
  • 意思決定をサポート: データ視覚化は、意思決定者に直観的なデータ サポートを提供し、複雑なデータから重要な情報を見つけて、より科学的で合理的な意思決定を行うのに役立ちます。

1.2 bqplot ライブラリの概要

bqプロット に基づいていますグラフィックスの文法 2D 視覚化ライブラリ、特にジュピターノートブック デザイン。それは組み合わせるd3.js そしてipyウィジェット d3.js の強力な視覚化機能を Python にもたらすように設計された機能。 bqplot ライブラリの主な機能をいくつか示します。

  • インタラクティブ性: bqplot は、グラフ上でパン、ズーム、選択などの操作を行うことができる豊富な対話型機能を提供し、データをより深く調査できます。
  • 柔軟性: オブジェクト指向のアプローチを使用すると、ユーザーはグラフィックスの文法を使用して高度にパーソナライズされたグラフを作成できます。
  • 使いやすさ: bqplot は、matplotlib に似た pyplot インターフェイスを提供するため、matplotlib に精通しているユーザーはすぐに使い始めることができます。
  • 統合: Jupyter Notebook のネイティブ ライブラリとして、bqplot はデータ分析ワークフローにシームレスに統合でき、ユーザーにスムーズなインタラクティブなエクスペリエンスを提供します。
インストールとクイックスタート

bqplot のインストールは非常に簡単で、ターミナルまたはコマンド プロンプトで次のコマンドを実行するだけです。

pip install bqplot
jupyter nbextension enable --py --sys-prefix bqplot
  • 1
  • 2

インストールが成功したら、必要なライブラリを Jupyter Notebook にインポートして使用を開始します。

import numpy as np
import bqplot.pyplot as plt
  • 1
  • 2

以下は、bqplot を使用してヒストグラムを作成する方法を示す簡単な例です。

# 生成随机数据
data = np.random.randn(100)

# 创建直方图
fig = plt.figure(title='Histogram by bqplot')
hist = plt.hist(sample=data, bins=10, colors=['#01a2d9'])
fig
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

この簡単な例を通して、bqplot の使いやすさと強力な対話型機能がわかります。次の章では、bqplot のさまざまなチャート タイプと高度な機能について詳しく説明します。

インストールとインポート

2.1 bqplot のインストール

データ視覚化に bqplot の使用を開始する前に、まず環境に bqplot ライブラリをインストールする必要があります。 bqplot はさまざまな方法でインストールできますが、最も一般的なのは pip または conda を使用します。両方の方法を使用するための詳細な手順は次のとおりです。

pipを使用してインストールする
pip install bqplot
  • 1
condaを使ってインストールする
conda install -c conda-forge bqplot
  • 1

インストールが完了したら、次のコマンドを実行して、インストールが成功したかどうかを確認できます。

import bqplot
print(bqplot.__version__)
  • 1
  • 2

2.2 必要なライブラリをインポートする

bqplot をインストールしたら、次に、データ視覚化作業を開始するために必要なライブラリをインポートする必要があります。通常、次のライブラリをインポートする必要があります。

  • bqplot: インタラクティブなグラフを作成するために使用されます。
  • numpy:数値計算やデータ処理に使用されます。
  • pandas: データの操作と分析に使用されます。

これらのライブラリをインポートするためのサンプル コードを次に示します。

import bqplot.pyplot as plt
import numpy as np
import pandas as pd
  • 1
  • 2
  • 3
例: bqplot をインポートして使用し、単純なグラフを作成する

すべてが正しく設定されていることを確認するには、単純な棒グラフを作成してみてください。以下は、必要なライブラリをインポートし、単純な棒グラフを作成する方法を示すサンプル コードです。

# 导入必要的库
import bqplot.pyplot as plt
import numpy as np

# 创建一个简单的条形图
fig = plt.figure(title="简单条形图示例")
x = list("ABCDE")
y = np.random.rand(5)
bar = plt.bar(x, y)
fig
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

この例では、最初にインポートしますbqplot.pyplotとしてplt、次に使用しますnumpyランダムなデータを生成します。次に、5 本の棒からなる単純な棒グラフを作成し、Jupyter Notebook に表示しました。

上記の手順により、bqplot ライブラリが正常にインストールおよびインポートされ、最初の単純な対話型グラフが作成されました。次に、より高度な機能とグラフの種類を引き続き探索できます。

データセットの準備

3.1 データセットのインポート

使い始める前に bqplot データの視覚化を実行する前に、まず必要なデータセットをインポートする必要があります。一般的なデータセットのインポート方法とその使用方法をいくつか紹介します。pandas このデータを処理するライブラリ。

pandas を使用して CSV ファイルをインポートする

pandas これは、データ分析と前処理に広く使用されている強力なデータ処理ライブラリです。使用方法は次のとおりですpandas CSVファイルのインポート例:

import pandas as pd

# 导入CSV文件
df1 = pd.read_csv("../input/autompg-dataset/auto-mpg.csv")
  • 1
  • 2
  • 3
  • 4
パンダを使用して他の形式でデータをインポートする

CSVファイル以外にも、pandas Excel ファイルや JSON ファイルなど、複数の形式でのデータのインポートもサポートしています。ここではいくつかの例を示します。

# 导入Excel文件
df_excel = pd.read_excel("../input/dataset.xlsx")

# 导入JSON文件
df_json = pd.read_json("../input/dataset.json")
  • 1
  • 2
  • 3
  • 4
  • 5
パンダを使用してデータベースからデータをインポートする

データがデータベースに保存されている場合は、次のように使用できます。 pandasread_sql データをインポートする機能。以下に例を示します。

import sqlite3

# 连接到SQLite数据库
conn = sqlite3.connect('../input/database.db')

# 从数据库中读取数据
df_sql = pd.read_sql('SELECT * FROM table_name', conn)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3.2 データセットのプレビュー

データセットをインポートした後、通常はデータセットをプレビューして、データの構造と内容を理解する必要があります。pandas データセットをプレビューするためのさまざまなメソッドが提供されています。

データセットの最初の数行を表示する

使用 head() データセットの最初の数行を表示するメソッド:

# 查看前5行数据
print(df1.head())
  • 1
  • 2
データセットに関する基本情報を表示する

使用 info() このメソッドでは、データ型や欠損値などのデータセットの基本情報を表示できます。

# 查看数据集的基本信息
print(df1.info())
  • 1
  • 2
データセットの統計を表示する

使用 describe() このメソッドでは、平均、標準偏差、最小値、最大値などを含むデータセットの統計情報を表示できます。

# 查看数据集的统计信息
print(df1.describe())
  • 1
  • 2
データセットの列名を表示する

使用 columns プロパティでは、データセットの列名を表示できます。

# 查看数据集的列名
print(df1.columns)
  • 1
  • 2

上記の方法を通じて、インポートされたデータ セットの基本を理解することで、その後のデータ視覚化作業の基礎を築くことができます。

{
  "title": "bqplot教程:在Jupyter Notebook中进行交互式数据可视化",
  "summary": "本文详细介绍了如何使用bqplot库在Jupyter Notebook中进行交互式数据可视化。bqplot是一个基于Grammar of Graphics的2D可视化解决方案,结合了d3.js和ipywidgets的功能,旨在将d3.js的功能带到Python中。",
  "content_outline": [
    {
      "h1": "基本图表类型",
      "h2": [
        "4.1 散点图",
        "4.2 饼图",
        "4.3 箱线图",
        "4.4 条形图",
        "4.5 堆积条形图"
      ]
    }
  ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

基本的なチャートの種類

4.1 散布図

散布図は、2 つの変数間の関係を示すために使用されるグラフです。散布図を使用すると、データの分布と相関関係を視覚的に観察できます。 bqplot では、散布図の作成は非常に簡単です。

import bqplot as bq
import numpy as np

# 创建数据
x = np.random.rand(100)
y = np.random.rand(100)

# 创建尺度
x_sc = bq.LinearScale()
y_sc = bq.LinearScale()

# 创建散点标记
scatter = bq.Scatter(x=x, y=y, scales={'x': x_sc, 'y': y_sc})

# 创建轴
ax_x = bq.Axis(scale=x_sc, label='X Axis')
ax_y = bq.Axis(scale=y_sc, orientation='vertical', label='Y Axis')

# 创建图表
fig = bq.Figure(marks=[scatter], axes=[ax_x, ax_y], title='Scatter Plot')

# 显示图表
fig
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

4.2 円グラフ

円グラフは、データの割合を表示するために使用されるグラフです。 bqplot では、円グラフの作成も同様に簡単です。

import bqplot as bq

# 创建数据
data = [10, 20, 30, 40]
labels = ['A', 'B', 'C', 'D']

# 创建饼图标记
pie = bq.Pie(sizes=data, labels=labels)

# 创建图表
fig = bq.Figure(marks=[pie], title='Pie Chart')

# 显示图表
fig
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

4.3 箱ひげ図

箱ひげ図は、データの分布を表示するために使用されるグラフです。データの中央値、四分位数、外れ値を表示できます。

import bqplot as bq
import numpy as np

# 创建数据
data = [np.random.normal(0, 1, 100), np.random.normal(3, 1, 100), np.random.normal(6, 1, 100)]

# 创建尺度
x_sc = bq.OrdinalScale()
y_sc = bq.LinearScale()

# 创建箱线图标记
boxplot = bq.Boxplot(x=data, scales={'x': x_sc, 'y': y_sc})

# 创建轴
ax_x = bq.Axis(scale=x_sc, label='Groups')
ax_y = bq.Axis(scale=y_sc, orientation='vertical', label='Values')

# 创建图表
fig = bq.Figure(marks=[boxplot], axes=[ax_x, ax_y], title='Box Plot')

# 显示图表
fig
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

4.4 棒グラフ

棒グラフは、カテゴリ データ間の比較を表示するために使用されるグラフです。各バーの高さは、そのカテゴリのデータ値を表します。

import bqplot as bq

# 创建数据
x_labels = ['A', 'B', 'C', 'D']
y_values = [30, 20, 40, 10]

# 创建尺度
x_sc = bq.OrdinalScale()
y_sc = bq.LinearScale()

# 创建条形图标记
bar = bq.Bars(x=x_labels, y=y_values, scales={'x': x_sc, 'y': y_sc})

# 创建轴
ax_x = bq.Axis(scale=x_sc, label='Categories')
ax_y = bq.Axis(scale=y_sc, orientation='vertical', label='Values')

# 创建图表
fig = bq.Figure(marks=[bar], axes=[ax_x, ax_y], title='Bar Chart')

# 显示图表
fig
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

4.5 積み上げ棒グラフ

積み上げ棒グラフは、複数のカテゴリ データ間の比較を表示するために使用されるグラフです。各バーの高さはそのカテゴリのデータ値を表し、各バーはセグメントに分割でき、各セグメントはサブカテゴリを表します。

import bqplot as bq

# 创建数据
x_labels = ['A', 'B', 'C', 'D']
y_values = [
    [30, 20],
    [20, 30],
    [40, 10],
    [10, 40]
]

# 创建尺度
x_sc = bq.OrdinalScale()
y_sc = bq.LinearScale()

# 创建堆积条形图标记
stacked_bar = bq.Bars(x=x_labels, y=y_values, scales={'x': x_sc, 'y': y_sc}, type='stacked')

# 创建轴
ax_x = bq.Axis(scale=x_sc, label='Categories')
ax_y = bq.Axis(scale=y_sc, orientation='vertical', label='Values')

# 创建图表
fig = bq.Figure(marks=[stacked_bar], axes=[ax_x, ax_y], title='Stacked Bar Chart')

# 显示图表
fig
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

高度なグラフの種類

5.1 ヒストグラム

ヒストグラムは、データの分布を示すために使用されるグラフの一種です。存在するbqplotで、使用できますplt.histヒストグラムを作成する関数。簡単な例を次に示します。

import numpy as np
import bqplot.pyplot as plt

# 生成随机数据
data = np.random.randn(1000)

# 创建直方图
fig = plt.figure()
hist = plt.hist(data, bins=30)
plt.title('Histogram of Random Data')
plt.xlabel('Value')
plt.ylabel('Frequency')

fig
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

この例では、最初に 1000 個のランダムなデータ ポイントを生成し、次に使用しました。plt.histこの関数は、30 個のビンを含むヒストグラムを作成します。タイトルや軸ラベルを設定することで、グラフをより明確で理解しやすくすることができます。

5.2 折れ線グラフ

折れ線グラフは、時間の経過に伴うデータの傾向やその他の連続変数を示すために使用される一般的なグラフの種類です。存在するbqplotで、使用できますplt.plot折れ線グラフを作成する関数です。以下に例を示します。

import numpy as np
import bqplot.pyplot as plt

# 生成数据
x = np.linspace(0, 10, 100)
y = np.sin(x)

# 创建折线图
fig = plt.figure()
line = plt.plot(x, y)
plt.title('Line Chart of Sine Function')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')

fig
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

この例では、100 個のデータ ポイントを持つ正弦関数データを生成し、plt.plotこの関数は折れ線グラフを作成します。タイトルや軸ラベルを設定することで、グラフをより明確で理解しやすくすることができます。

5.3 ローソク足チャート

ローソク足チャート (ローソク足チャートとも呼ばれる) は、株価などの財務データを表示するために使用されるチャートの一種です。存在するbqplotで、使用できますplt.candleローソク足チャートを作成する機能。以下に例を示します。

import numpy as np
import bqplot.pyplot as plt

# 生成随机金融数据
n = 100
open_prices = np.random.randn(n)
high_prices = open_prices + np.random.rand(n)
low_prices = open_prices - np.random.rand(n)
close_prices = open_prices + np.random.randn(n) * 0.5

# 创建蜡烛图
fig = plt.figure()
candle = plt.candle(open_prices, high_prices, low_prices, close_prices)
plt.title('Candlestick Chart of Random Financial Data')
plt.xlabel('Time')
plt.ylabel('Price')

fig
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

この例では、ランダムな始値、高値、安値、終値データを生成し、plt.candleこの関数はローソク足チャートを作成します。タイトルや軸ラベルを設定することで、グラフをより明確で理解しやすくすることができます。

5.4 ヒートマップ

ヒート マップは、2 次元データの密度または強度分布を表示するために使用されるチャートの一種です。存在するbqplotで、使用できますplt.heatmapヒートマップを作成する機能。以下に例を示します。

import numpy as np
import bqplot.pyplot as plt

# 生成随机数据
data = np.random.rand(10, 10)

# 创建热力图
fig = plt.figure()
heatmap = plt.heatmap(data)
plt.title('Heatmap of Random Data')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')

fig
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

この例では、ランダム データの 10x10 行列を生成し、次を使用しました。plt.heatmapこの関数はヒート マップを作成します。タイトルや軸ラベルを設定することで、グラフをより明確で理解しやすくすることができます。

5.5 地理地図

地理チャートは、地図などの地理データを表示するために使用されるチャートの一種です。存在するbqplotで、使用できますplt.geo地理地図を作成する機能。以下に例を示します。

import bqplot.pyplot as plt

# 加载地理数据
map_data = 'World'

# 创建地理图
fig = plt.figure()
geo = plt.geo(map_data)
plt.title('Geographical Map')

fig
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

この例では、世界地図データをロードしてから、plt.geoこの関数は地理地図を作成します。タイトルを設定することで、グラフをより明確で理解しやすくすることができます。

インタラクティブ機能

6.1 インタラクティブコンポーネントの概要

データ視覚化では、対話型機能がユーザー エクスペリエンスとデータ探索機能を向上させる鍵となります。bqplot ユーザーが Jupyter Notebook で動的かつ応答性の高いデータ探索を実行できるようにする、豊富な対話型コンポーネントを提供します。これらの対話型コンポーネントには次のものが含まれますが、これらに限定されません。

  • ズームとパン: ユーザーはグラフを拡大または縮小したり、グラフをパンしてデータのさまざまな領域を表示したりできます。
  • 選択してスワイプ: ユーザーがグラフ内の特定のデータ ポイントまたは領域を選択して、さらに分析できるようにします。
  • ツールチップ: マウスをデータポイントの上に置くと、詳細情報が表示されます。
  • 動的更新: ユーザー入力またはデータ変更に基づいてグラフを動的に更新できるようにします。

これらのインタラクティブなコンポーネントは、 bqplotInteractions モジュールの実装により、ユーザーは直感的で強力なデータ探索ツールを利用できます。

6.2 一般的な対話型コンポーネントの使用

ズームとパン

ズームとパンは、データ視覚化における最も基本的な対話型機能です。bqplot 組み込みのズームおよびパン機能を提供し、ユーザーはマウス ホイールを使用してズームし、マウス ドラッグを使用してパンを行うことができます。簡単な例を次に示します。

import bqplot.pyplot as plt
import numpy as np

# 创建数据
x = np.linspace(-10, 10, 100)
y = np.sin(x)

# 创建图表
fig = plt.figure(title="Zoom and Pan Example")
plt.plot(x, y)
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

この例では、ユーザーはマウス ホイールを使用してチャートを拡大または縮小し、マウスをドラッグしてチャートをパンできます。

選択してスワイプ

選択およびブラシ選択機能を使用すると、ユーザーはグラフ内の特定のデータ ポイントまたは領域を選択してさらに分析することができます。bqplot 提供されたBrushSelector そしてLassoSelector この機能を実装するためのコンポーネント。以下は用途ですBrushSelector 例:

from bqplot import BrushSelector

# 创建选择器
brush = BrushSelector(x_scale=x_scale, y_scale=y_scale)

# 将选择器添加到图表
fig.interaction = brush
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

この例では、ユーザーはマウスをドラッグしてチャート内の長方形の領域を選択でき、選択したデータ ポイントが強調表示されます。

ツールチップ

ユーザーがデータ ポイントの上にマウスを置くと、ツールチップに詳細情報が表示されます。bqplot 提供されたTooltip この機能を実現するコンポーネント。簡単な例を次に示します。

from bqplot import Tooltip

# 创建工具提示
tooltip = Tooltip(fields=['x', 'y'], formats=['.2f', '.2f'])

# 将工具提示添加到图表
scatter.tooltip = tooltip
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

この例では、ユーザーが散布図のデータ ポイントの上にマウスを移動すると、 x そしてy 価値。

動的更新

動的更新機能を使用すると、ユーザー入力またはデータの変更に基づいてグラフを動的に更新できます。bqplot 提供されたinteracts この機能を実装するモジュール。簡単な例を次に示します。

from ipywidgets import IntSlider

# 创建滑块
slider = IntSlider(value=50, min=0, max=100, step=1)

# 定义更新函数
def update_plot(change):
    new_value = change['new']
    scatter.x = np.linspace(0, new_value, 100)

# 绑定滑块到更新函数
slider.observe(update_plot, names='value')

# 显示滑块和图表
slider
fig
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

この例では、ユーザーはスライダーの値を調整することで、チャート内のデータを動的に更新できます。

高度な機能とアプリケーション

7.1 インタラクティブなダッシュボード

インタラクティブ ダッシュボードは、データ視覚化における重要なアプリケーションです。これにより、ユーザーはインタラクティブ コンポーネントを通じてデータを動的に探索し、データの背後にある情報をより深く理解できるようになります。 bqplot は、対話型ダッシュボードを作成するための強力な機能を提供します。ここでは、複数のグラフと対話型コンポーネントを含むダッシュボードを作成する方法を示す簡単な例を示します。

インタラクティブなダッシュボードを作成するには
  1. 必要なライブラリをインポートする

    import bqplot as bq
    import ipywidgets as widgets
    from bqplot import pyplot as plt
    import numpy as np
    
    • 1
    • 2
    • 3
    • 4
  2. データの準備

    x = np.arange(100)
    y = np.random.randn(100).cumsum()
    
    • 1
    • 2
  3. グラフコンポーネントを作成する

    line_chart = plt.plot(x, y, 'Line Chart')
    bar_chart = plt.bar(x, y, 'Bar Chart')
    
    • 1
    • 2
  4. インタラクティブなコンポーネントを作成する

    dropdown = widgets.Dropdown(
        options=['Line Chart', 'Bar Chart'],
        value='Line Chart',
        description='Chart Type:'
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
  5. インタラクションロジックを定義する

    def on_change(change):
        if change['new'] == 'Line Chart':
            plt.clear()
            plt.plot(x, y, 'Line Chart')
        elif change['new'] == 'Bar Chart':
            plt.clear()
            plt.bar(x, y, 'Bar Chart')
    
    dropdown.observe(on_change, names='value')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  6. 複合コンポーネント

    dashboard = widgets.VBox([dropdown, plt.figure])
    display(dashboard)
    
    • 1
    • 2

上記の手順により、ユーザーがドロップダウン メニューからさまざまなグラフの種類を選択して動的なデータ視覚化を実現できる、シンプルな対話型ダッシュボードを作成できます。

7.2 データセレクター(セレクター)

データ セレクターは、データのフィルター処理と対話のための bqplot の重要なコンポーネントです。データ セレクターを使用すると、ユーザーはチャート上でデータを直接選択して操作し、より洗練されたデータ分析を実現できます。

データセレクターの使用例
  1. 必要なライブラリをインポートする

    import bqplot as bq
    import ipywidgets as widgets
    from bqplot import pyplot as plt
    import numpy as np
    
    • 1
    • 2
    • 3
    • 4
  2. データの準備

    x = np.arange(100)
    y = np.random.randn(100).cumsum()
    
    • 1
    • 2
  3. チャートの作成

    scatter_chart = plt.scatter(x, y, 'Scatter Chart')
    
    • 1
  4. データセレクターの作成

    selector = bq.interacts.BrushSelector(x_scale=scatter_chart.scales['x'], y_scale=scatter_chart.scales['y'])
    scatter_chart.interaction = selector
    
    • 1
    • 2
  5. 選択ロジックを定義する

    def on_selection(change):
        selected_data = scatter_chart.selected
        print(f"Selected Data: {selected_data}")
    
    selector.observe(on_selection, names='selected')
    
    • 1
    • 2
    • 3
    • 4
    • 5
  6. チャートを表示

    display(plt.figure)
    
    • 1

上記の手順により、散布図上にデータ セレクターを作成でき、ユーザーはマウスをドラッグしてデータ ポイントを選択し、選択したデータをコンソールに出力できます。

7.3 投影法と地図の高度な応用

bqplot は、基本的な 2D チャートをサポートするだけでなく、さまざまな地図投影法や高度な地理チャートの作成に使用できる強力な地理チャート機能も提供します。

地理地図の作成例
  1. 必要なライブラリをインポートする

    import bqplot as bq
    import ipywidgets as widgets
    from bqplot import pyplot as plt
    import numpy as np
    
    • 1
    • 2
    • 3
    • 4
  2. 地理データの準備

    import json
    with open('world.json') as f:
        world_data = json.load(f)
    
    • 1
    • 2
    • 3
  3. 地理地図を作成する

    map_chart = bq.Map(
        map_data=bq.topo_load('world.json'),
        scales={'projection': bq.AlbersUSA()}
    )
    
    • 1
    • 2
    • 3
    • 4
  4. インタラクティブなコンポーネントを作成する

    dropdown = widgets.Dropdown(
        options=['AlbersUSA', 'Mercator', 'Orthographic'],
        value='AlbersUSA',
        description='Projection:'
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
  5. インタラクションロジックを定義する

    def on_change(change):
        if change['new'] == 'AlbersUSA':
            map_chart.scales['projection'] = bq.AlbersUSA()
        elif change['new'] == 'Mercator':
            map_chart.scales['projection'] = bq.Mercator()
        elif change['new'] == 'Orthographic':
            map_chart.scales['projection'] = bq.Orthographic()
    
    dropdown.observe(on_change, names='value')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  6. 複合コンポーネント

    map_dashboard = widgets.VBox([dropdown, map_chart])
    display(map_dashboard)
    
    • 1
    • 2

上記の手順により、複数の地図投影をサポートする地理地図を作成できます。ユーザーはドロップダウン メニューからさまざまな投影方法を選択して、動的な地図表示を実現できます。

これらの高度な機能とアプリケーションを通じて、bqplot は強力なデータ視覚化ツールをユーザーに提供し、Jupyter Notebook での対話型データ分析をより便利かつ効率的にします。

APIドキュメント

8.1 パイプロット

bqplot のようなものを提供しますmatplotlibpyplot API を使用すると、ユーザーはグラフを迅速に作成して表示できます。以下は一般的に使用されるものですpyplot 機能と例:

  • figure(): 新しいグラフィックを作成します。
  • plot():折れ線グラフを描きます。
  • scatter(): 散布図を描きます。
  • bar():棒グラフを描きます。
  • pie():円グラフを描きます。
  • hist():ヒストグラムを描画します。

サンプルコード:

from bqplot import pyplot as plt
import numpy as np

# 创建数据
x = np.arange(10)
y = x ** 2

# 创建图形
fig = plt.figure()

# 绘制折线图
plt.plot(x, y)

# 显示图形
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

8.2 オブジェクトモデル

bqplot オブジェクト モデルはグラフィックスの文法に基づいており、グラフをカスタマイズするためのより柔軟かつ詳細な方法を提供します。以下にいくつかの主要なオブジェクトと例を示します。

  • Figure: すべてのマーカーと軸を含むグラフのコンテナー。
  • Mark: 線、点、バーなどの特定のグラフィック要素。
  • Axis:軸。
  • Scale: データからグラフへのマッピング。

サンプルコード:

from bqplot import Figure, Axis, Scale, Lines
import numpy as np

# 创建数据
x = np.arange(10)
y = x ** 2

# 创建比例尺
x_scale = Scale(min=0, max=10)
y_scale = Scale(min=0, max=100)

# 创建轴
x_axis = Axis(scale=x_scale, label='X Axis')
y_axis = Axis(scale=y_scale, label='Y Axis', orientation='vertical')

# 创建标记
line = Lines(x=x, y=y, scales={'x': x_scale, 'y': y_scale})

# 创建图形
fig = Figure(marks=[line], axes=[x_axis, y_axis])

# 显示图形
fig
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

8.3 ツールチップとツールバー

bqplot 豊富なツールチップとツールバー機能を提供し、ユーザーがグラフィックスをより便利に操作できるようにします。

  • Tooltip:マウスをホバーするとデータ情報を表示します。
  • Toolbar: ズームやパンなどのインタラクティブな機能を提供します。

サンプルコード:

from bqplot import Tooltip, Toolbar

# 创建工具提示
tooltip = Tooltip(fields=['x', 'y'], formats=['.2f', '.2f'])

# 创建工具栏
toolbar = Toolbar(figure=fig)

# 添加到图形
line.tooltip = tooltip
fig.toolbar = toolbar

# 显示图形
fig
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

8.4 相互作用と市場マップ

bqplot 選択、ズーム、パンなどの複雑なインタラクティブ機能をサポートします。また、bqplot マーケット マップなどの高度な視覚化を作成するために使用することもできます。

サンプルコード:

from bqplot import MarketMap
import pandas as pd

# 创建数据
data = pd.DataFrame({
    'label': ['A', 'B', 'C', 'D'],
    'values': [100, 200, 150, 300],
    'color': ['red', 'green', 'blue', 'yellow']
})

# 创建市场地图
market_map = MarketMap(names=data['label'], values=data['values'], colors=data['color'])

# 创建图形
fig = Figure(marks=[market_map])

# 显示图形
fig
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

上記の API ドキュメントの導入により、ユーザーはよりよく理解して使用できるようになります。 bqplot ライブラリを使用して、リッチでインタラクティブなデータ視覚化を作成します。

移行ガイドと貢献

9.1 移行ガイド

Matplotlib や Plotly などの他のデータ視覚化ライブラリから既存のプロジェクトを bqplot に移行するときに、いくつかの課題が発生する可能性があります。ここでは、移行プロセスをナビゲートするのに役立ついくつかの重要な手順と考慮事項を示します。

9.1.1 bqplot の基本概念を理解する

移行を開始する前に、まず次のような bqplot の基本概念を理解する必要があります。

  • 天秤: 線形スケール、対数スケールなどのデータのマッピング方法を定義します。
  • マーク: 散布点、線、棒などのグラフ内の視覚要素を表します。
  • : チャートの座標軸を定義します。
  • インタラクション: ユーザーがグラフを操作する方法を定義します。
9.1.2 データの準備

データの準備ができており、bqplot で必要な形式に簡単に変換できることを確認してください。通常、データは Pandas DataFrame に保存できるため、データの操作と視覚化が容易になります。

9.1.3 段階的な移行
  1. 必要なライブラリをインポートする

    import bqplot as bq
    import pandas as pd
    import numpy as np
    
    • 1
    • 2
    • 3
  2. スケールと軸を作成する

    x_sc = bq.LinearScale()
    y_sc = bq.LinearScale()
    ax_x = bq.Axis(scale=x_sc, label='X Axis')
    ax_y = bq.Axis(scale=y_sc, label='Y Axis', orientation='vertical')
    
    • 1
    • 2
    • 3
    • 4
  3. タグの作成

    data = pd.DataFrame(np.random.randn(100, 2), columns=['X', 'Y'])
    scatter = bq.Scatter(x=data['X'], y=data['Y'], scales={'x': x_sc, 'y': y_sc})
    
    • 1
    • 2
  4. チャートの作成

    fig = bq.Figure(axes=[ax_x, ax_y], marks=[scatter])
    
    • 1
  5. チャートを表示

    display(fig)
    
    • 1
9.1.4 インタラクションの処理

bqplot は、さまざまなプロパティを設定することで実現できる豊富な対話型関数を提供します。たとえば、ズームおよびパン機能を有効にするには:

scatter.enable_move = True
scatter.enable_zoom = True
  • 1
  • 2
9.1.5 カスタムスタイル

bqplot を使用すると、色、マーカー スタイル、線のスタイルなどを含むグラフのスタイルをカスタマイズできます。たとえば、散布図の外観をカスタマイズするには、次のようにします。

scatter = bq.Scatter(x=data['X'], y=data['Y'], scales={'x': x_sc, 'y': y_sc}, colors=['blue'], default_size=20, marker='triangle-up', stroke='black')
  • 1

9.2 貢献ガイドライン

bqplot はオープン ソース プロジェクトであり、コミュニティ メンバーはコード、ドキュメント、サンプルの寄稿を歓迎します。ここでは、bqplot プロジェクトへのコントリビュートを開始する際に役立つ、コントリビュート ガイドラインをいくつか示します。

9.2.1 開発環境のセットアップ
  1. リポジトリのクローンを作成する

    git clone https://github.com/bqplot/bqplot.git
    cd bqplot
    
    • 1
    • 2
  2. 依存関係をインストールする

    pip install -r requirements.txt
    
    • 1
  3. 開発版をインストールする

    pip install -e .
    
    • 1
9.2.2 コードの記述

コードを提供する場合は、次のガイドラインに従ってください。

  • コーディングスタイル:PEP 8 スタイル ガイドに従ってください。
  • 書類: 新機能または変更に関するドキュメントを追加します。
  • テスト:コードの正確性を確認する単体テストを作成します。
9.2.3 PR の送信
  1. ブランチを作成する

    git checkout -b my-new-feature
    
    • 1
  2. 変更をコミットする

    git add .
    git commit -m "Add some feature"
    
    • 1
    • 2
  3. プッシュブランチ

    git push origin my-new-feature
    
    • 1
  4. プルリクエストの作成
    変更内容と動機を説明する新しいプル リクエストを GitHub で作成します。

9.2.4 コミュニティに参加する
  • ディスカッションに参加する: bqplot の Gitter チャット ルームまたは GitHub ディスカッション フォーラムに参加して、他の開発者とコミュニケーションを図ります。
  • 問題を報告します: 問題やバグを見つけた場合は、GitHub で問題を送信してください。
  • フィードバックを提供します: プロジェクトの開発をより良くするために、新機能や改善点に関するフィードバックを提供します。

これらのガイドラインに従うことで、bqplot プロジェクトに貴重な貢献をし、Python コミュニティでのインタラクティブなデータ視覚化の進歩に貢献できます。

概要と展望

10.1 bqplot の利点と制限

アドバンテージ

bqプロット に基づいていますグラフィックスの文法 のために設計された 2D 視覚化システムジュピターノートブック デザイン。これには次のような大きな利点があります。

  1. インタラクティブ性: bqplot の各コンポーネントは対話型ウィジェットであるため、ユーザーはビジュアライゼーションを他の Jupyter 対話型ウィジェットと簡単に統合して、複雑なグラフィカル ユーザー インターフェイス (GUI) を作成できます。
  2. 使いやすさ: ユーザーは、複雑なグラフィックス プログラミングを深く理解することなく、単純な Python コードを通じて、さまざまなチャートを迅速に作成およびカスタマイズできます。
  3. 柔軟性: 散布図、円グラフ、箱ひげ図、棒グラフなどのさまざまな種類のグラフをサポートし、さまざまなデータ視覚化のニーズに対応します。
  4. 統合: Jupyter エコシステムと完全に統合されているため、データ サイエンティストやアナリストがデータ分析プロセスで簡単に使用できます。
制限事項

bqplot は強力な機能と柔軟性を提供しますが、いくつかの制限もあります。

  1. パフォーマンス: 大規模なデータ セットの場合、特に複雑なグラフや大量のデータを扱う場合、bqplot のパフォーマンスは一部の専門的な視覚化ツールほど良くない可能性があります。
  2. 学習曲線: bqplot は比較的簡単に始めることができますが、初心者にとっては、その API と対話型コンポーネントに慣れるまでにまだ時間がかかります。
  3. コミュニティサポート: 一部の成熟した視覚化ライブラリと比較して、bqplot のコミュニティは小さいため、問題が発生したときにヘルプが得られるリソースが限られている可能性があります。

10.2 将来の開発動向

活発なオープンソース プロジェクトとして、bqplot の今後の開発動向は注目に値します。

  1. パフォーマンスの最適化: テクノロジーの発展により、bqplot のパフォーマンスが大幅に向上し、大規模なデータ セットや複雑なチャートをより適切に処理できるようになると予想されます。
  2. 新機能の統合: 将来のバージョンでは、3D 視覚化、アニメーションのサポートなど、より高度なチャート タイプやインタラクティブな機能が導入される可能性があります。
  3. コミュニティの成長: bqplot の人気と適用範囲が拡大するにつれて、そのコミュニティは成長を続け、より多くの開発者やユーザーが参加するようになると予想されます。
  4. クロスプラットフォームのサポート: Jupyter Notebook に加えて、bqplot は他のプラットフォームや環境にも拡張され、より幅広いアプリケーション シナリオを提供する可能性があります。

つまり、bqplot は強力なインタラクティブなデータ視覚化ツールとして、データ サイエンスの分野で幅広い応用の可能性を秘めています。継続的な最適化と機能拡張により、データ分析と視覚化の可能性がさらに広がります。