Python での視覚化: Matplotlib の基本チュートリアル

Python での視覚化: Matplotlib の基本チュートリアル

1. Matplotlib 視覚化ライブラリの紹介

1.1 Matplotlib の機能

Matplotlib は、静的、動的、および対話型の視覚化チャートを作成するためのオープン ソース ライブラリであり、次の特徴があります。

  • 線形グラフ、棒グラフ、散布図、円グラフ、ヒストグラムなどを含む 2D または 3D グラフィックスを作成できます。
  • グラフのサイズ、色、線の種類、ラベル、注釈など、グラフのさまざまなプロパティをカスタマイズできます。
  • Tkinter、wxPython、Qt、GTK など、さまざまな低レベルの描画ライブラリをサポートします。

1.2 Matplotlib の応用分野

Matplotlib は、データ分析、科学研究、工学設計、教育デモンストレーションなどの分野で一般的に使用されています。データやグラフィックをより明確かつ直観的に表示し、そこからさまざまなデータ特徴を抽出するのに役立ちます。

1.3 Matplotlib のインストールとプラグインの管理

Matplotlib をインストールするには、次のように pip コマンドを使用します。

pip install matplotlib

Matplotlib には、Seaborn、mpld3、ggplot など、グラフィックスの品質、インタラクティブ性、描画速度などを向上させるためのプラグインも多数あります。pip コマンドを使用してこれらのプラグインをインストールできます。たとえば、Seaborn プラグインをインストールするには、次のコマンドを実行できます。

pip install seaborn

2. Matplotlib 視覚化ライブラリの基本的な使用法

2.1 グラフィックインフラストラクチャ

2.1.1 図形オブジェクト

Matplotlib のグラフィック インフラストラクチャは、Figure オブジェクトと Axes オブジェクトで構成されます。Figure オブジェクトは Figure 全体のウィンドウまたはページを表し、複数のサブfigure (Axes オブジェクト) を含めることができます。Figure オブジェクトを作成するには、次のように subplots() 関数を呼び出します。

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

2.1.2 Axes オブジェクト

Axes オブジェクトは、サブプロットに軸、グラフィックス、テキストなどの 1 つ以上の要素が含まれていることを示します。Axes オブジェクトを作成するには、次のように subplots() 関数で行、列の数、およびサブプロット番号を指定できます。

import matplotlib.pyplot as plt

fig, axs = plt.subplots(2, 3)  # 创建2x3的子图集合
ax1 = axs[0, 0]  # 获取第1个子图
ax2 = axs[0, 1]  # 获取第2个子图
ax3 = axs[1, 0]  # 获取第3个子图
ax4 = axs[1, 1]  # 获取第4个子图
ax5 = axs[1, 2]  # 获取第5个子图

2.2 曲線と散布図を描く

2.2.1 ポイントマーカーと線のスタイル

次のように、Matplotlib でさまざまなマーカーと線のスタイルを使用して、散布図と曲線を描画できます。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y = np.sin(x)

fig, ax = plt.subplots()
ax.plot(x, y, 'ro--', label='sin(x)')
ax.legend()

上記のコードは、NumPy を使用して x 値と y 値のセットを生成し、次に、plot() 関数を使用して散布図を描画し、カラー マーカー、線のスタイル、および凡例のラベルを指定します。さらに、凡例を表示するには、legend() 関数が使用されます。

2.2.2 軸と目盛り

Matplotlib では、xlabel()、ylabel()、および title() 関数を使用して座標軸とグラフ タイトルを設定し、xticks() および yticks() 関数を使用して座標のスケール マークとラベルを設定できます。軸。例えば:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

fig, ax = plt.subplots()
ax.plot(x, y1, 'r-', label='sin(x)')
ax.plot(x, y2, 'b-', label='cos(x)')

ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_title('Trig Functions')
ax.legend()

上記のコードでは、まずx、y1、y2の値を生成し、plot()関数で異なる色の2つの曲線を描画します。次に、set_xlabel()、set_ylabel()、および set_title() 関数を使用して軸とグラフのタイトルを設定し、legend() 関数を使用して凡例を表示します。

上記は Matplotlib 視覚化ライブラリの基本的な使用法であり、これらの関数とメソッドを使用して、さまざまな 2D および 3D グラフィックスを作成し、ユーザーに提示することができます。

3. Matplotlib 視覚化ライブラリの高度な使用

このパートでは、ヒストグラム、棒グラフ、円グラフ、レーダー チャート、3D グラフィックスの描画方法など、Matplotlib 視覚化ライブラリの高度な使用法を紹介し、使用可能なさまざまなパラメータの意味を説明します。

3.1 ヒストグラムと棒グラフの描画

3.1.1 水平ヒストグラムと棒グラフ

関数を使用してhist()垂直のヒストグラムと棒グラフを描画するのは非常に簡単ですが、水平のヒストグラムと棒グラフが必要な場合は、barh()水平のサブグラフで関数を使用して水平のヒストグラムと棒グラフの描画を完了できます。

import matplotlib.pyplot as plt
import numpy as np

# 随机生成一组数据
x = np.random.randn(1000)

# 创建一个横向子图
fig, ax = plt.subplots()

# 绘制直方图
ax.hist(x, bins=20, orientation='horizontal', color='b')

# 显示图形
plt.show()

上記のコードでは、最初に NumPy の乱数​​生成関数を使用して 1000 個の乱数のセットが生成されます。次に、subplots()関数を使用して水平サブグラフを作成し、hist()関数を使用してbinsパラメータとorientation='horizontal'パラメータを指定して水平ヒストグラムを描画し、colorパラメータを使用してヒストグラムの色を設定します。

3.1.2 積み上げヒストグラムと棒グラフ

Matplotlib では、単純なヒストグラムや棒グラフを描画するためのhist()関数が使用できます。bar()複数のデータセットの分布を表示する必要がある場合は、比較のために積み上げヒストグラムと棒グラフを使用できます。alphaグラフをより鮮明にするパラメーターを設定することで、異なるデータ グループ間の透明度を制御できます。

import matplotlib.pyplot as plt
import numpy as np

# 随机生成两组数据
x = np.random.randn(1000)
y = np.random.randn(1000)

# 创建一个子图
fig, ax = plt.subplots()

# 绘制直方图
ax.hist([x, y], bins=20, stacked=True, alpha=0.5, label=['x', 'y'])

# 显示图例
ax.legend()

# 显示图形
plt.show()

上記のコードでは、最初に 2 セットの 1000 個の乱数が生成され、subplots()関数を使用してサブグラフが作成されます。次に、hist()関数を使用してbins引数、stacked=True引数、alpha引数、およびlabel引数を指定して積み上げヒストグラムをプロットし、legend()関数を使用して凡例を表示します。

3.2 円グラフとレーダーチャートの描画

3.2.1 円グラフの描画方法とパラメータ

円グラフはMatplotlib の関数を通じて描画できますpie()pie()この関数は、円グラフの各部分のサイズを示す配列パラメーターを受け入れることができ、explodeこのパラメーターを使用して、特定の部分または複数の部分を強調表示できます。

import matplotlib.pyplot as plt
import numpy as np

# 创建一个数组
sizes = np.array([50, 25, 15, 10])

# 创建一个标签数组
labels = ['A', 'B', 'C', 'D']

# 突出显示某一部分
explode = [0, 0.1, 0, 0]

# 绘制饼图
plt.pie(sizes, labels=labels, explode=explode, autopct='%1.1f%%', shadow=True, startangle=90)

# 显示图形
plt.show()

上記のコードでは、まずサイズ 4 の配列とラベル配列を作成し、explodeパラメーターを使用して B 部分を強調表示します。次に、pie()関数を使用しlabels、引数、explode引数、autopct引数、shadow引数、および引数を指定してstartangle円グラフを描画します。

3.2.2 レーダーチャートの描画方法とパラメータ

Matplotlib では、polar()関数を使用して直交座標軸を極座標軸に変換し、レーダー チャートを描画できます。fill()関数とplot()関数を使用して、多角形を塗りつぶしたり、折れ線グラフを描画したりできます。

import matplotlib.pyplot as plt
import numpy as np

# 创建一个数组
values = [3, 2, 5, 4, 1]

# 创建一个标签数组
labels = ['A', 'B', 'C', 'D', 'E']

# 计算每一部分的角度
angles = np.linspace(0, 2 * np.pi, len(values), endpoint=False)

# 将360度的角度固定在一个平面上
angles = np.concatenate((angles, [angles[0]]))

# 创建一个子图
fig, ax = plt.subplots(nrows=1, ncols=1, subplot_kw=dict(projection='polar'))

# 绘制多边形
ax.fill(angles, values, 'blue', alpha=0.1)

# 绘制线图
ax.plot(angles, values, 'blue',linewidth=2)

# 设置角度间隔,并标记角度
ax.set_xticks(angles[:-1])
ax.set_xticklabels(labels)

# 设定角度范围
ax.set_ylim(0, 6)

# 显示图形
plt.show()

上記のコードでは、まずサイズ 5 の配列とラベル配列を作成し、linspace()関数と関数計算を使用してそれらを 5 つの部分に分割し、それぞれがconcatenate()極座標系で7 2 ∘ 72^{\circ}を占めます。7 2fill()次に、関数とを使用してplot()、色と透明度を指定して多角形や折れ線グラフを描画します。最後に、set_xticks()関数とset_xticklabels()関数を使用して角度間隔とラベルを設定し、set_ylim()関数を使用して角度範囲を設定します。

3.3 3Dグラフィックスの描画

3.3.1 シンプルな 3D グラフィックス

Matplotlib では、mplot3dモジュール内のサブパッケージを使用してAxes3D3D グラフィックスを描画できます。scatter()関数を使用して散布図をプロットしたり、plot_surface()関数を使用して表面プロットをプロットしたりできます。関数を使用してランダムな 3D 散布図を描画する簡単な例を見てみましょうscatter()

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

# 随机生成一组数据
n = 100
x = np.random.rand(n)
y = np.random.rand(n)
z = np.random.rand(n)

# 创建一个3D子图
fig = plt.figure()
ax = fig.add_subplot(projection='3d')

# 绘制3D散点图
ax.scatter(x, y, z, c='r', marker='o')

# 显示图形
plt.show()

上記のコードでは、まず関数を使用してrandom.rand()100 個の乱数のセットを生成します。次に、add_subplot()関数を使用して 3D サブプロットが作成され、projection='3d'パラメーターが指定されました。次に、scatter()関数を使用し、cパラメーターとmarkerパラメーターを指定して 3D 散布図を描画しました。最後にshow()関数を使用してグラフを表示します。

3.3.2 ローミング、インタラクション、カスタマイズ

Matplotlib で 3D グラフィックスをローミング、操作、カスタマイズして、視覚化を向上させることができます。plot_surface()この関数を使用して多項式曲面を描画する例を見てみましょう。

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

# 创建一个3D子图
fig = plt.figure()
ax = fig.add_subplot(projection='3d')

# 定义x和y的取值范围
x = np.outer(np.linspace(-2, 2, 100), np.ones(100))
y = x.copy().T

# 定义z的取值范围
z = x**2 + y**3

# 绘制3D多项式表面
ax.plot_surface(x, y, z, cmap='coolwarm', edgecolor='none')

# 设定坐标轴标签
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')

# 添加颜色条
fig.colorbar(ax.plot_surface(x, y, z, cmap='coolwarm', edgecolor='none'))

# 显示图形
plt.show()

上記のコードでは、最初に関数を使用してadd_subplot()3D サブグラフを作成します。次に、outer()関数と関数を使用してcopy()、x、y、z の値の範囲を定義しました。次に、plot_surface()関数を使用してカラーマップとエッジの色を指定して多項式曲面を描画します。最後に、set_xlabel()関数、set_ylabel()関数、関数を使用してset_zlabel()軸ラベルを追加し、colorbar()関数を使用してカラーバーを追加します。

4. 高度なアプリケーションと最適化のスキル

このパートでは、Matplotlib をより柔軟かつ効率的に使用できるようにすることを目的として、Matplotlib の高度なアプリケーションといくつかの最適化テクニックを紹介します。

4.1 Matplotlib の高度なアプリケーション

4.1.1 図形の正確な位置とサイズを描画する

Matplotlib では、Figure オブジェクトと Subplot オブジェクトを使用して、グラフの正確な位置とサイズを制御できます。

  • Figureオブジェクトは、figsizeパラメータ。
  • Subplotset_position()メソッドを使用して、オブジェクトの位置とサイズを変更できます。これは、左下と右上の座標がそれぞれピクセルと連結された四角形の引数を取ります。
import matplotlib.pyplot as plt

# 创建一个 Figure 对象
fig = plt.figure(figsize=(6, 4))

# 创建一个 Axes 对象
ax = fig.add_subplot(111)
ax.plot([1, 2, 3], [4, 5, 6])

# 设置 Subplot 的位置和大小
ax.set_position([0.1, 0.1, 0.8, 0.8])

# 显示图形
plt.show()

上記のコードでは、まずfigure()関数Figureオブジェクトを作成し、figsizeパラメータ(6, 4)。これは、グラフィックのサイズが幅 6 インチ、高さ 4 インチであることを示します。次に、add_subplot()メソッド座標系オブジェクトを作成し、set_position()メソッドを使用して座標系の位置とサイズを設定します。set_position()このメソッドの 4 つのパラメーターは、左下隅の x 座標、左下隅の y 座標、長方形の幅、および長方形の高さです。最後にshow()関数グラフを表示します。

4.1.2 ビッグデータの処理とプロット

大量のデータを処理してプロットすると、Matplotlib が非常に遅くなったり、応答しなくなったりすることがあります。この問題を解決するには、次のトリックを使用できます。

  1. データをチャンクに分けて処理します。データセット全体をメモリにロードするのではなく、データを小さな塊に分けて処理してプロットします。
  2. データポイントの数を減らします。sample()この関数を使用してデータセットのサイズを減らすか、ドットプロットの代わりにスムーズな遷移を使用します。
  3. 並列コンピューティングを使用します。マルチスレッドテクノロジまたはプロセスプールテクノロジを使用して、プログラムの実行速度を向上させます。
import numpy as np
import matplotlib.pyplot as plt

# 创建一个大数据集
n = 1000000
x = np.random.normal(size=n)
y = np.random.normal(size=n)

# 1. 分块处理数据
k = 1000
for i in range(n // k + 1):
    x_chunk = x[i * k: (i + 1) * k]
    y_chunk = y[i * k: (i + 1) * k]
    plt.scatter(x_chunk, y_chunk, s=1)

# 2. 减小数据点的数量
plt.hist2d(x, y, bins=100, cmap=plt.cm.jet)

# 3. 使用并行计算
from multiprocessing import Pool
with Pool() as p:
    result = p.map(compute, data)

上記のコードではnumpy.random.normal()、最初に関数100万個の乱数を含むデータ セットを生成しますxy最初の方法を使用して、データをサイズ 1000 の小さなブロックに分割し、scatter()関数散布図を描画するか、2 番目の方法を使用して、hist2d()関数を使用して点の代わりに 2D ヒストグラムを描画することができます。マップ; または、プログラムの速度を上げるためにマルチスレッドを使用してデータ セットを処理する 3 番目の方法を使用します。

4.2 Matplotlib の最適化手法

4.2.1 プロットの組版を最適化するsubplots()ために

Matplotlib では、subplots()この関数。

import numpy as np
import matplotlib.pyplot as plt

# 创建一个大小为 (6, 8) 的 Figure 对象和两个大小为 (2, 2) 的 Subplot 对象
fig, axs = plt.subplots(2, 2, figsize=(6, 8))

# 子图 1
x1 = np.arange(0, 10, 0.1)
y1 = np.sin(x1)
axs[0, 0].plot(x1, y1)
axs[0, 0].set_title('Subplot 1')

# 子图 2
x2 = np.arange(0, 10, 0.1)
y2 = np.cos(x2)
axs[0, 1].plot(x2, y2)
axs[0, 1].set_title('Subplot 2')

# 子图 3
x3 = np.random.normal(size=1000)
y3 = np.random.normal(size=1000)
axs[1, 0].scatter(x3, y3, s=1)
axs[1, 0].set_title('Subplot 3')

# 子图 4
x4 = np.random.gamma(shape=2, size=1000)
axs[1, 1].hist(x4, bins=50)
axs[1, 1].set_title('Subplot 4')

# 调整子图之间的间距
plt.subplots_adjust(hspace=0.3)

# 显示图形
plt.show()

上記のコードは、最初にsubplots()関数 size のオブジェクト(6, 8)と size の 2 つのオブジェクトを作成します。次に、、 、関数を使用してさまざまなタイプのサブプロットを描画し、関数を使用してサブプロットにタイトルを追加します。最後に、関数サブプロット間の間隔を調整し、関数を使用してグラフを表示します。Figure(2, 2)Subplotplot()scatter()hist()set_title()subplots_adjust()show()

4.2.2 カラーバーを使用したデータの表示

Matplotlib では、カラー バー (カラーバー) を使用して、データ セット内の値の大きさや変化の傾向を表示できます。

import numpy as np
import matplotlib.pyplot as plt

# 创建一个大小为 (6, 4) 的 Figure 对象和一个 Subplot 对象
fig, ax = plt.subplots(figsize=(6, 4))

# 生成一个包含 1000 个二维坐标的数据集
x, y = np.random.normal(size=(2, 1000))

# 绘制散点图,并使用颜色条展示数据的分布
sc = ax.scatter(x, y, s=20, c=x, cmap=plt.cm.jet)
fig.colorbar(sc)

# 添加标题和标签
ax.set_title('Scatter Plot with Colorbar')
ax.set_xlabel('X')
ax.set_ylabel('Y')

# 显示图形
plt.show()

上記のコードでは、最初にsubplots()関数サイズのオブジェクト(6, 4)オブジェクトを作成します。次に、関数て 1000 個の 2 次元座標とを含むデータセットを生成し関数を散布図を描画し、パラメーターを使用してカラー バーの値を指定します。次に、関数カラーバーを追加し、および関数を使用してタイトルとラベルを追加します。最後に、関数グラフを表示します。FigureSubplotnumpy.random.normal()xyscatter()ccolorbar()set_title()set_xlabel()set_ylabel()show()

4.2.3 グリッド線を使用してデータをより適切に表示する

Matplotlib でグリッド ラインを使用すると、データセット内のデータの分布と傾向をより適切に表示できます。

import numpy as np
import matplotlib.pyplot as plt

# 创建一个大小为 (6, 4) 的 Figure 对象和一个 Subplot 对象
fig, ax = plt.subplots(figsize=(6, 4))

# 生成一个包含 1000 个正态分布数据的数据集
data = np.random.normal(size=1000)

# 绘制直方图,并使用网格线展示数据的分布
ax.hist(data, bins=50, alpha=0.5, edgecolor='black', linewidth=1.2)
ax.grid(True)

# 添加标题和标签
ax.set_title('Histogram with Grid Lines')
ax.set_xlabel('Value')
ax.set_ylabel('Frequency')

# 显示图形
plt.show()

上記のコードでは、最初にsubplots()関数サイズのオブジェクト(6, 4)オブジェクトを作成します。次に、1000 個の正規分布データを含むデータセットを生成し関数ヒストグラムを描画し、パラメーターを使用して透明度を指定し、パラメーターとパラメーターを使用して境界線の色と幅を設定します。次に、関数グリッド線を追加し、および関数を使用してタイトルとラベルを追加します。最後に、関数グラフを表示します。FigureSubplotdatahist()alphaedgecolorlinewidthgrid()set_title()set_xlabel()set_ylabel()show()

5. 実戦事例の分析

このセクションでは、Python の視覚化ライブラリ Matplotlib を使用して天気予報グラフとデータ分析グラフを作成する方法を学びます。

5.1 天気予報地図の作成

5.1.1 気象データのインポート

通常、天気予報マップには過去の気象データが必要ですが、ここでは Pandas ライブラリのread_csv()関数。

import pandas as pd

# 读取天气数据集
weather_data = pd.read_csv('weather_data.csv')

# 访问天气数据集中的前五行数据
print(weather_data.head())

上記のコードは、 Pandas ライブラリのread_csv()関数呼び出されたweather_data.csv気象データセットを読み取り、その関数を使用してデータセットの最初の 5 行にアクセスします。head()

5.1.2 天気予報図の作成

次に、Matplotlib ライブラリのplot()関数fill_between()簡単な天気予報地図を描画できます。

import matplotlib.pyplot as plt

# 设置图形大小和标题
plt.figure(figsize=(10, 6))
plt.title('Weather Forecast')

# 绘制最高温度和最低温度的曲线
plt.plot(weather_data['date'], weather_data['high_temp'], color='red', label='High Temp')
plt.plot(weather_data['date'], weather_data['low_temp'], color='blue', label='Low Temp')

# 填充最高温度和最低温度曲线之间的区域
plt.fill_between(weather_data['date'], weather_data['high_temp'], weather_data['low_temp'], color='grey', alpha=0.2)

# 设置横轴和纵轴标签
plt.xlabel('Date')
plt.ylabel('Temperature')

# 显示图例
plt.legend()

# 显示图形
plt.show()

上記のコードでは、まずfigure()関数グラフのサイズとタイトルを設定します。次に、plot()関数最高温度と最低温度の曲線をプロットし、fill_between()関数を使用して 2 つの曲線の間の領域を灰色で塗りつぶします。次にxlabel()ylabel()および 関数を使用して横軸と縦軸のラベルを設定し、関数を使用してlegend()凡例。最後に、show()関数グラフを表示します。

5.2 データ分析チャートの作成

5.2.1 データ分析データのインポート

データ分析グラフでは通常、データ分析結果を含むデータセットを使用する必要がありますが、ここでは Pandas ライブラリのread_excel()関数。

import pandas as pd

# 读取数据分析数据集
analysis_data = pd.read_excel('analysis_data.xlsx')

# 访问数据分析数据集中的前五行数据
print(analysis_data.head())

上記のコードは、Pandas ライブラリのread_excel()関数analysis_data.xlsxという名前のデータ分析データ セットを読み取り、head()その関数をデータ セット内のデータの最初の 5 行にアクセスします。

5.2.2 棒グラフ、折れ線グラフ、円グラフの描画

次に、 Matplotlib ライブラリbar()の関数、plot()関数、pie()関数を使用して、ヒストグラム、折れ線グラフ、円グラフを描画できます。

import matplotlib.pyplot as plt

# 设置图形大小和标题
plt.figure(figsize=(10, 6))
plt.suptitle('Data Analysis')

# 绘制柱状图
plt.subplot(1, 2, 1)
plt.bar(analysis_data['name'], analysis_data['value'])
plt.xticks(rotation=45)

# 绘制折线图
plt.subplot(2, 2, 2)
plt.plot(analysis_data['name'], analysis_data['value'], marker='o')

# 绘制饼图
plt.subplot(2, 2, 4)
plt.pie(analysis_data['value'], labels=analysis_data['name'], autopct='%1.1f%%', shadow=True, startangle=90)

# 显示图形
plt.show()

上記のコードは、figure()関数グラフのサイズと全体のタイトルを設定します。次に、ヒストグラム、折れ線グラフ、円グラフを描画する位置を設定するsubplot()機能。次に、bar()関数、xticks()関数を使用して横軸のラベルが回転されました。plot()折れ線グラフは関数を使用して描画され、markerデータ ポイントのスタイルはパラメーターを使用して指定されます。最後に、pie()関数て円グラフを描画し、labelsパラメータを使用してデータ ブロックのラベルを指定し、autopctパラメータパーセントの形式を指定し、shadowパラメータを使用して影を追加し、startangleパラメータ開始角度。最後にshow()関数グラフを表示します。

6. 実際の応用シナリオ

Pythonのビジュアライゼーションは一般的なデータビジュアライゼーションだけでなく、金融やライフサイエンスなど様々な業界や分野で幅広く活用できます。

6.1 金融業界における Python ビジュアライゼーションの応用

6.1.1 ローソク足チャートの描画

K ライン チャートは金融業界でよく使用されるチャートの一種で、株式や先物などの金融商品の価格変動傾向を表示するために使用されます。Python では、Matplotlib ライブラリの mpl_finance モジュールを使用してローソク足チャートを描画できます。

import matplotlib.pyplot as plt
from mpl_finance import candlestick_ohlc
import pandas as pd
import matplotlib.dates as mpl_dates

# 读取股票数据
data = pd.read_csv('stock_data.csv')

# 将日期信息从字符串格式转换为日期格式
data['date'] = pd.to_datetime(data['date'])
data['date'] = data['date'].apply(mpl_dates.date2num)

# 绘制K线图
fig, ax = plt.subplots()
candlestick_ohlc(ax, data.values, width=0.6, colorup='green', colordown='red', alpha=0.8)
plt.xlabel('Date')
plt.ylabel('Price')
plt.title('Stock Price Trend')
plt.xticks(rotation=45)
plt.show()

上記のコードでは、最初に Pandas ライブラリを使用してstock_data.csvという名前の、その中の日付情報を文字列形式から日付形式に変換します。次に、Matplotlib ライブラリのcandlestick_ohlc関数。関数の第一パラメータは描画の座標軸、第二パラメータは描画データ、第三パラメータは各Kラインの幅、第四パラメータは立ち上がり時の色、第五パラメータは立ち上がり時の色です。 Color の場合、6 番目のパラメータは透明度です。次に、xlabel()関数とylabel()関数を使用して横軸と縦軸のラベルをそれぞれ設定し、title()関数を使用してグラフのタイトルを設定し、xticks()関数を使用して横軸の日付ラベルを回転し、最後にshow()関数を使用してグラフを表示します。

6.1.2 時系列グラフのプロット

時系列グラフは、時間の経過に伴う財務データの傾向を示すために金融で一般的に使用されるもう 1 つのグラフの種類です。Python では、Pandas ライブラリと Matplotlib ライブラリを使用して時系列グラフを描画できます。

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

# 读取股票数据
data = pd.read_csv('stock_data.csv')

# 将日期信息从字符串格式转换为日期格式
data['date'] = pd.to_datetime(data['date'])

# 将日期列作为索引
data.set_index('date', inplace=True)

# 绘制时间序列图
fig, ax = plt.subplots()
ax.plot(data.index, data['price'], label='Price')
ax.plot(data.index, data['volume'], label='Volume')
plt.xlabel('Date')
plt.ylabel('Value')
plt.title('Stock Data')
ax.xaxis.set_major_locator(mdates.YearLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y'))
plt.legend()
plt.show()

上記のコードでは、最初に Pandas ライブラリを使用してstock_data.csvという名前の、その中の日付情報を文字列形式から日付形式に変換します。次に、日付列をインデックスとして使用します。次に、Matplotlib ライブラリのplot()関数、株価と取引高の推移をそれぞれ時間の経過とともにプロットします。xlabel()関数ylabel()関数を使用して横軸と縦軸のラベルをそれぞれ設定し、title()関数グラフのタイトルを設定し、xaxisオブジェクトのset_major_locator()メソッドを使用しset_major_formatter()て横軸の目盛りの位置と形式を設定します。最後に、legend()関数、show()関数を使用してグラフを表示します。

6.2 ライフサイエンスにおける Python 視覚化の応用

6.2.1 バイオインフォマティクスグラフの描画

Python はライフサイエンスの分野でも広く使用されており、遺伝子構造図、配列ロゴ図、遺伝子発現プロファイルなどのさまざまなバイオインフォマティクス グラフィックの描画に使用できます。ここでは遺伝子構造図を例に、BioPython ライブラリと Matplotlib ライブラリを使用して遺伝子構造図を描画する方法を紹介します。

from Bio import SeqIO
import matplotlib.pyplot as plt

# 读取基因序列
gene = SeqIO.read('gene.fasta', 'fasta')

# 绘制基因结构图
fig, ax = plt.subplots(figsize=(10, 5))
for index, feature in enumerate(gene.features):
  # 只绘制CDS区域的部分
  if feature.type == 'CDS':
    # 绘制CDS的矩形框
    rect = plt.Rectangle((feature.location.start, -index - 1), len(feature), 1, alpha=0.5, color='blue')
    ax.add_patch(rect)

# 设置坐标轴标签
plt.xlabel('Position')
plt.ylabel('Feature')
plt.title('Gene Structure')

# 隐藏Y坐标轴刻度
plt.yticks([])

# 显示图形
plt.show()

上記のコードでは、まず BioPython ライブラリのSeqIO.read()関数gene.fastaという名前の遺伝子配列を読み取り、enumerate()その関数とfeatures遺伝子配列オブジェクトの属性を使用して遺伝子構造マップを繰り返し描画します。ここでは CDS (コーディング シーケンス) 領域の一部のみに注目しているためfeature.typeCDSMatplotlib ライブラリのRectangle()関数のみを描画します。次に、xlabel()関数とylabel()関数を使用して横軸と縦軸のラベルを設定し、title()関数を使用してグラフのタイトルを設定します。最後に、yticks()関数Y 軸のスケールを非表示にし、show()関数を使用してグラフを表示します。

6.2.2 分子構造とバイオマーカーのマッピング

Python は、分子構造やバイオマーカーなどの図を描画するためにも使用でき、これは医薬品開発において重要な用途があります。ここでは、py3Dmol ライブラリを例として、Py3Dmol ライブラリを使用して分子構造とバイオマーカーを描画する方法を紹介します。

import py3Dmol

def view_molecule(smiles):
  # 创建py3Dmol.view对象
  view = py3Dmol.view(width=400, height=400)
  
  # 绘制分子结构
  view.addModel(smiles, 'smi')
  
  # 添加生物标记
  view.addResLabels()
  
  # 设定视角
  view.zoomTo()
  
  # 返回页面
  return view.show()

# 绘制分子结构和生物标记
view_molecule('O=C1C(=O)CCC1C(=O)O')

上記のコードでは、py3Dmol.view()まず関数を使用して、分子構造とバイオマーカーを表示するpy3Dmol.viewオブジェクト。次に、addModel()関数特定の構造を持つ有機化合物を描画し、それを SMILES 形式で関数に渡します。addResLabels()この関数を使用して、各原子の共有結合にラベルを付けます。最後に、zoomTo()関数。最後に、view.show()関数グラフを表示します。

7. まとめと振り返り

Python のビジュアライゼーションは、近年徐々に広く使用され評価されており、金融、ライフ サイエンス、エンジニアリング テクノロジーなど、あらゆる分野で人気の応用分野があります。Python ビジュアライゼーションの利点は、使いやすさ、多様なチャート、豊富なコミュニティ サポートにあり、結果を迅速に表示するだけでなく、専門的な科学研究データの分析やグラフ作成にも使用できます。今後、Python ビジュアライゼーションはますます主流となり、Python ビジュアライゼーション ライブラリの更新、開発、革新は、データ サイエンティストやエンジニアに無限の想像力と創造の余地をもたらし、人々の生産と生活に利便性と革新をもたらすでしょう。

おすすめ

転載: blog.csdn.net/u010349629/article/details/130663630