Python
- matplotlibのグラフgif動画の背景透過法
現在、以下の解説サイトを参考に、 タイマーカウントありのグラフ動画の作成をArtistAnimationにて試みています。 https://www.yutaka-note.com/entry/matplotlib_artist_anim 「plt.show()」による表示だけでなく、gif動画で自動保存したいため、 参考サイトどおり以下のコードを末尾に追加しています。 anim.save("ファイル名.gif", writer="pillow") ただ、背景(グラフ領域と余白部分)を透明化(透過)させたいため、 以下のコードをグラフ領域の作成直後に追加しています。 fig.patch.set_alpha(0.0) すると、自動保存されたgifファイルは、背景の透明化はされているものの、 タイマー文字ならびにグラフ枠線や軸タイトルといったレイアウトが全て上書きされて出力されてしまいました。 (画像参照、タイマー文字は潰れ、グラフレイアウトはジャギーのようになっています。) 「plt.show()」での表示はきちんと背景が透明化された上で想定通りの挙動を示しているため、 原因としては「anim.save()」の部分だと考えているのですが、 色々と試行錯誤しても想定通りの挙動(上書きされずに透明化)が叶いません。 pillowライブラリの構造の関係で無理筋なのかもしれませんが、 gifファイル自動保存の前提を崩さない上で、上手いコーディング方法をご存じの方がもしおられましたら、 教えていただけますと助かります。 (出力後の別途の画像コンバートや、ffmpeg等の外部ツールを入れてのMP4出力は考えていません。 できるだけ簡便な手法を望んでいます。) 【以下、問題としているサンプルコード】 # 1. 必要なモジュールの読み込み import numpy as np from matplotlib import pyplot as plt from matplotlib.animation import ArtistAnimation # 2.グラフ領域の作成 fig, ax = plt.subplots() fig.patch.set_alpha(0.0) #背景部分の透明化 # 3. アニメーション要素のリスト artists = [] for i in range(100): x = np.linspace(0, 4*np.pi) y = np.sin(x - i/100 * 2*np.pi) # アニメーション化する要素の準備 my_line, = ax.plot(x, y,"blue") my_text = ax.text(0, y[0], " ? inlet", color="darkblue", size ="large") my_title = ax.text( 4.5, 1.15, f"Count = {i}", size="xx-large") # アニメーション化する要素をリスト化 artists.append([my_line, my_text, my_title]) # 4. アニメーション化 anim = ArtistAnimation(fig, artists, interval=50) plt.show() anim.save("ファイル名.gif", writer="pillow") #透明化はされるがgifファイル上で文字が上書きされる
- 締切済み
- Python
- spikeeagle
- 回答数1
- プログラミング 記号の意味 <>
プログラミングに関する質問です.いまはfortranやPythonで書いています. 画像のような圧縮場を速度を入力として求めたいのですが<>みたいな記号はどのような意味を持ってるのでしょうか?コードを書く時にどう反映させるべきか悩んでいます. どなたか分かる方お願いします.
- matplotlibのプロットに配列を使用する方法
下記のサイト等を参考にして、PythonのmatplotlibのFuncAnimationにて、 グラフプロットのアニメーションを作ろうとしています。 https://sabopy.com/py/matplotlib-animation-62/ https://www.yutaka-note.com/entry/matplotlib_func_anim 測定データ(n個)毎、および測定時間(m個)毎に、プロットするべきデータがx軸, y軸でそれぞれ存在し、 それらプロットの数値は各々、【plot_data_x[n][m]】, 【plot_data_y[n][m]】という配列に予め格納されているとします。 その上で、 for counter in range(n): for counter in range(m): plot_list[n][m], = ax.plot([], []) for counter in range(n): for counter in range(m): plot_list[n][m].set_data((plot_data_x[n][m], plot_data_y[n][m])) というような形にすると、【set_data】メソッドが正常に機能しないのか、予約後表記にもならず(VSCode環境)エラーで弾かれます。 (あるいは【plot_list[n][m]】が想定通りに初期化されていない?) for文を使わず【plot1_1】,【plot1_2】…のように単一の変数を列挙する形式であれば動作したのですが、 どうしても配列になると動いてくれません。 これはそもそも【ax.plot】や【.set_data】が配列に対応していないのでしょうか。 それともコードのどこかしらに間違いがあるのでしょうか。 お手数をおかけして申し訳ありませんが、 どなたか詳しい方おられましたら配列で動かす手段を教えていただけますと助かります。 よろしくお願いします。
- 締切済み
- Python
- spikeeagle
- 回答数1
- Pythonにおける空要素での2次元配列作成の方法
現在、Pythonにおける空要素の2次元配列の作成(初期化)について、 初歩的な事柄でありながらも引っかかっています。 list1 = [] print(list1) #[] list2 = [[]for i in range(5)] print(list2) #[[], [], [], [], []] list3 = [[0 for i in range(5)] for j in range(3)] print(list3) #[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] list4 = [["" for i in range(5)] for j in range(3)] print(list4) #[['', '', '', '', ''], ['', '', '', '', ''], ['', '', '', '', '']] 各種解説サイトを探して、list3やlist4の形での作成方法は見つけたのですが、 list1やlist2のように、完全な空要素(null?)での方法は見当たらず、 自分でも手探りで試してみたのですが、うまくいきませんでした。 今欲している、 #[[], [], [], [], []], [[], [], [], [], []], [[], [], [], [], []] という出力を得るためには、どのように作成したらよろしいでしょうか。
- 締切済み
- Python
- spikeeagle
- 回答数1
- Pythonボタンを押したら〇行目に行く
Python でTkinterを用い、ボタンを押したら、100行目以下へ行く、みたいなことはできないのでしょうか。以前何かプログラムを勉強してた時そういったのがあったように思ったのですが。 あるプログラムの真ん中ぐらいで、いったん止めて、ボタンを表示させ、ボタンを押したら、それ以降を実行するようにしたいです。 通常、ボタンを押したら、ボタンの関数を実行する形にするようです。それでいくと、私の状況だと、ボタンの関数に、後半を全て入れてしまわないといけないようになります。そうしないといけないのでしょうか。 root.mainloop() は、ボタンを表示させて確認したい、その真ん中あたりに置くというのでよいのでしょうか。ボタンを押したら、root.mainloop() より下のプログラムを進めるようにしたいです。
- python
span01=5 span02=25 df['sma01'] = price.rolling(window=span01).mean() df['sma02'] = price.rolling(window-span02).mean() 株の移動平均株価を出したいときにspan01で5日間の平均、02で25日間の平均で出そうとしたところ NameError Traceback (most recent call last) <ipython-input-18-a51b604b2644> in <module> 5 6 df['sma01'] = price.rolling(window=span01).mean() ----> 7 df['sma02'] = price.rolling(window-span02).mean() 8 9 plt.figure(figsize=(30,10)) NameError: name 'window' is not defined これがでました。どうすればいいですか?
- ベストアンサー
- Python
- idontlikeclang
- 回答数1
- python 湾曲画像を補正したい
歪曲収差 https://optipedia.info/opt/optics/distortion/ した画像をpython 中で補正したいのですが、 何かしらヒントをご存じであれば教えてください。 cv2でアフィン変換あたりですぐに見つかるだろうと思ったけど、なかなかこれというのが見つからず
- 締切済み
- Python
- muuming2001
- 回答数1
- Pythonの問題 rangeについて
Pythonの問題をやっていると、rangne(5)の出力結果が、0,1,2,3,4のときもあればrange(0,5)になっているときもあるように思います。 なぜ異なるのでしょうか?
- python 要素取得時の変数の設定方法
要素を取得する際に固定ではなく変数で取得したいです。 変数を使用したい場合、どのように記載すればよろしいでしょうか? いろいろ試してみましたが、書き方がダメなのかエラーになってしまいます。 driver.find_elements("css selector","td[data="変数"]")
- 締切済み
- Python
- okoktasukaru4
- 回答数1
- pythonでエラー「out of memory」
python seleniumでエラー「out of memory」の解決策を教えてほしいです。 python seleniumでブラウザの自動操作を行っています。 一覧の画面にボタンがあり、For文で繰り返し画面遷移を行っています。 処理が進むにつれてメモリがどんどん増え、最終的にメモリ不足で処理が停止してしまいます。 tracemallocでメモリの容量を見たところ 下記の2つが処理が進むにつれてメモリどんどん増えています。 C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\urllib\parse.py:387: size=27.0 KiB, count=257, average=108 B C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\urllib\parse.py:411: size=25.5 KiB, count=256, average=102 B ファイルの内容としてはurlが関係しているのかなと考えています。 parse.py:387⇒splitresult = urlsplit(url, scheme, allow_fragments) parse.py:411⇒return url[start:delim], url[delim:] parse.pyはシステムファイル?のためどのようにメモリの解放を行えばよいのか調査しましたが解決策が思い浮かびませんでした。 途中でメモリの解放等を行う方法がありますでしょうか?
- ベストアンサー
- Python
- okoktasukaru4
- 回答数1
- Python-Pandas でcsvを読み込んだ時
csv の中に"0"から始まりすべてが数字の文字コードがあります。 これを「文字列」として読み込む方法を、どなたかご存じありませんか?
- OBS600D(Debian6)のPython環境
ハードウェアの都合で、Debian6でPython3.1のプログラム開発・運営環境を整えています(ハードウェアはぷらっとホーム社マイクロサーバ、OBS600D PowerPC 600Mhz MM:1GB FROM:128MB CF:16GB)。pipのインストールでつまづいています。ご教授下さい。 *作業手順 ⓪製品マニュアルの手順に従い、初期化したCFメモリーをセット後起動し、Debian6を初期化しました。このDebian6は、フラッシュメモリの中の圧縮された50MBほどのデータが展開されただけなので、OSの基本部分だけです。 ②Debianサイトから、Debian6のPowerPC用の.isoファイルをダウンロード、USBメモリに展開し「dpkg -i」で .debパッケージを手動で一つづつ操作して、 Python3.1 をインストールしました。「python3.1」のように、バージョン番号を付加したコマンドで、Pythonを起動できます。 ③python-pip_0.7.2-1_all.debをdpkgすると、下のようなエラーメッセージが表示されます。 python-pip depends on python; however: Package python is not installed. メッセージからすると、Pythonをバージョン番号なしで起動できる必要があるようです。このエラーを解決する方法をご教授願います。
- Pythonの環境について
Pythonの環境を整える際にpytorchがあります。私はてっきりanacondaとpytorchはお互いがそれぞれ別々に作り上げる環境であり、どっちがいいか思案する図式のものだと思っていました。私はanacondaでやっていました。ところが、pytorchのインストールプロセスを見るとanacondaのシェルからcondaコマンドを通してpytorchをインストールするということなので上記の位置づけが間違っているとわかりました。anacondaの中にpytorchがあるという形式だからです。また import torchを宣言してコードを進めていくようですが、import condaというものはないですね。pytorchはどのようなものだと考えたらいいでしょうか。よろしくお願いします。
- 締切済み
- Python
- skmsk1941093
- 回答数1
- python
game.py class janken: def rsp(): import random count = 0 i = 0 hands = [] bk_hands=["ぐー","ちょき","ぱー"] f = open("rsp.txt","w") f.write("ぐー\nちょき\nぱー")・・・ mein.py mport game #各機能のクラスのインスタンスを作成する j = game() #無限ループで対話をしていく #ユーザーが終了コマンドを入力するまで繰り返す while True: #機能呼び出しのコマンドを表示する #じゃんけんの他にも機能があれば、2,3と増やしていくべし print('何をしますか?') print('1: じゃんけんする') print('9: 終了する') #入力されたコマンドに応じて機能を呼び出す act = int(input('整数で番号を入力:')) #1が入力されたらじゃんけんのメソッドを呼び出す if act == 1: j.rsp()・・・ この場合にmein.py", line 4, in <module> j = game() TypeError: 'module' object is not callable と出るのですが、なぜ呼び出してくれないのでしょうか
- python3
def walk(): for i in range(hor): if i == hor_now: print("*", end="") for h in range(var - 1): print("〇",end ="") print() else: for h in range(var): print("〇",end ="") print() print(walk) 普通に出力することはできるんですが、defでユーザー定義関数にすると<function walk at 0x000001541505B9D0>こうなってしまいます、なぜでしょうか?
- python3 for文について
m=3 for i in range(m) i = input() とやった場合に0~2にinputの中身が格納されているんじゃないのでしょうか、print(1)などをやってもエラーが出てしまいます
- python3 の演習問題
リストAの中にある文字列二つを組み合わせて、リストAの中にある単語を作れる組み合わせの数を表示するプログラムを作れと言われましたがわかりません、教えてください!