単二電池

google Colabでmatplotlibの描画をinline以外に表示させる方法ってあるのでしょうか?
3Dでグラフをマウス操作で回転させたいのですが、inlineではできないようです。
別の画面に表示させて、そこで回転できるようにしたいのですが。

A 回答 (2件)

まず


!pip install ipympl

で環境に ipympl をインストールしておきます。

以下 3D のサンプル

%matplotlib ipympl
import matplotlib.pyplot as plt
import numpy as np

#以下の2行は Google colab でのみ必要
from google.colab import output
output.enable_custom_widget_manager()

#fig, ax = plt.subplots()
z = np.arange(0, 10, 0.01)
x = np.cos(z)
y = np.sin(z)

fig = plt.figure()
ax = fig.add_subplot(projection='3d')

ax.plot(x, y, z, color='green')


これで、3Dグラフをぐりぐり回せます。
ただ グラフが Web 画面に埋め込まれるためか
かなり重いです(^^;

Jupyter Nitebookや Jupyter lab では、グラフは ブラウザとは別のデスクトップアプリに表示されるので快適です(^^;
また Jupyter Nitebookや Jupyter lab では ipympl のインストールは不要。

%matplotlib tk

と書けば良いようです。
colab は純粋なWebアプリなので無理でしょうね。

結論: なんとかできるけど、この方法は実用性が低そう。
    • good
    • 0

ipywidget でインタラクティブグラフを colab で動かしてみたけど


ダメでした。

やっぱり、ローカルに jupyter の環境作った方が簡単そう。

import ipywidgets as wgt
import numpy as np
import matplotlib.pyplot as plt

def func001():
@wgt.interact(a=(-10,10), b=(-10, 10), c=(-20, 20))
def f(a, b, c):
# print(a, b, c)
x = np.linspace(-3, 3, 1000)
y1 = b * x
y2 = a * x **2 + b * x + c
fig, ax = plt.subplots()
ax.plot(x, y1)
ax.plot(x, y2)
ax.set(ylim=(-100, 100))

func001()

jupyter notebook や JJupyter lab だと、
図が更新されてゆきますが
colab だと図が増えてゆきます(^^;
なんか裏技があるのかも・・・
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A