Matplotlib でグラフプログラミング【Python】
■ このスレッドは過去ログ倉庫に格納されています
このスレッドは天才チンパンジー「アイちゃん」が 言語訓練のために立てたものです。 アイと研究員とのやり取りに利用するスレッドなので、 関係者以外は書きこまないで下さい。 京都大学霊長類研究所 http://pc12.2ch.net/test/read.cgi/unix/1164719425/708 より: gnuplot vs matplotlib 2Dプロット系: "できること" で言えば、パイチャートなどがデフォルト でプロットできる matplotlib の方が上。ちょっと混み入った設定や アノテーションの加え方も matplotlib の方が楽。 3Dプロット系: 完成度と速度の面で gnuplot の勝ち。 プロットプログラムの再利用性: これは matplotlib の余裕勝ち。 見た目の綺麗さ: matplotlibではデフォでグラフにアンチエイリアスや ヒンティングがかかっている。gnuplot だと wx 末端を使えば matplotlibのそれとほとんど同様になるが、他の末端も 含めて評価するとmatplotlibに軍配が上がる。 数式: TeXのフォントがデフォルトで入っていて、インストール直後 LaTeXのインストール無しでも即効TeXと同じように書けるので matplotlib の勝ち。 結論としては、多種多様のプロットを生成したいのであれば、 matplotlibを使った方が長期的に見て効率が良さそう。特に python 使い であれば、断然 matplotlib の方が有利。それと、gnuplotはあまり融通 が効かず、ちょっとした変更が時に面倒だったり、"できそうでできない" ことが何気に結構あったりしたが、matplotlibなら、その心配は無さそう。 しかし、「簡単にsin(x)のプロットが作れればいいやー」程度のユーザーなら、 gnuplotでいいと思うし、そういった単純なグラフなら gnuplot の方が簡単。 自分でスレ立てといて言うのもなんだが、 google、インデックス早っ! もう既にこのスレが検索結果(結構上位)に引掛ってるし。 ttp://www.google.com/search?q=matplotlib&hl=ja&lr=lang_ja Debianでmatplotlibインストールしたら、バージョンが0.98.1だったぁ! 3次元プロットがギリできない〜 三次元空間において、 曲面 z = f(x,y)と 曲面 z = g(x,y) が交わる曲線をプロットする良い方法はあるかな? >>7 普通に同じaxesにfとgを加えればいいでしょ。 使ったことないけど、 ax.add_collection3d 見てみれば? ttp://matplotlib.sourceforge.net/examples/mplot3d/polys3d_demo.html これ良くできてるけど、意外と知られてないよね。 gnuplotだけで頑張ってる人は一見の価値あり。 gnuplotだと付属のヘルプで大体マスターできるけど、 matplotlibって何か簡潔で分かり易いのない? gnuplotで頑張ってきた人だけど、おもしろそうなので ちょっと遊んでみます。 gnuplotだと『splot 'data.dat' using 5:6:18』とすればプロットしてくれたけど、 こっちでは自分で全部書かないといけないのかな? 自分は↓こうしているんだけど、もっと簡単な方法ってある? #!/usr/bin/env python import re myRegExp = re.compile('^\s*#') column1 = 5 column2 = 6 column3 = 18 X = [] Y = [] Y = [] fname = open('data.dat', 'r') for lines in fname: if myRegExp.match(lines): print '1 line ignored.' else: itemList = lines.split() X.append( float( itemList[ column1 ] ) ) Y.append( float( itemList[ column2 ] ) ) Z.append( float( itemList[ column3 ] ) ) 基本的にプロット用のライブラリだから、データの用意は自分で...って感じだけど、 テキスト形式を読みこむ関数はある(実際はmatplotlibのバックエンドのnumpyの機能)。 import pylab data = pylab.loadtxt("data.dat", comments="#") X, Y, Z = data[:,(5, 6, 8)] >>12 即席で書いたやつだが、こうすれば良し。 LL = [ line.strip().split() for line in file('data.dat') ] columns = map(list, zip(*LL)) columns[4], columns[5], column[18] matplotlibはpythonのライブラリだけど、 コアな計算部分は numpy や PIL だから、 中身は大体Cの部分が実行されてるよね? スピードはgnuplotと比べてどのぐらい違うんだろうか? >>13-14 ありがとう!だいぶ短くなるんですね。 pythonを使うのが初めてなので、まず言語の勉強から始めなければ。 >>13 NumPyでこんなスライスができるのは知らなかった python 使いで gnuplot の限界を感じた人が 使うってだけじゃなくて matplotlib 自体がお目あてで 来る人もいるんだねぇ そういう人むけのチュートリアルとかが出来るといいね Matplotlibでgriddataを使っているヒトいますか?ちゃんと動きますか? Debianにgriddataをソースからインストールしたのですが、 セグメントエラーを吐くようになってしまいました。 >>1 ギャラリーにSICPで見かけたおねえさんがw pngファイルを読み込んでそれをそのままmatplotで表示って、 皆さんどうやってますか? >>24 たとえば入力した画像の明るさを読み取って、ある値以上の明るさの画素は白、他は黒にして出力 などといった画像処理につなげたいのですが… import pylab import scipy.misc m = scipy.misc.imread("grayscale.png") pylab.imshow(m < 127) pylab.savefig("output.png") こんなんでどう? >>26 おお!ありがとうございます! 今ちょっと手元に無いので明日試してみます 研究室の友人(C言語しか知らない)にPython勧めたら、その場に居合わせた他の研究室の奴に、 「なんでそんな聞いたこともない言語使うの?VBでいいじゃん」 って言われてしまった。理系だったらPythonのがいいと思うんだけどなぁ。。。 聞いたことも無いのはお前が不勉強だからだってすぐに言えば良かったのに python しらねーの?w 情弱 プギャー w でよかったんじゃね? >>28 両方使えるのがいい。 VBはExcel操作できるから、知っていれば意外と使える。 excel操作なんか大抵の言語でできるよ(当然pythonも) Excelに10000行くらいのデータを貼り付けてプロットしてる人を見るとアホかと思う >>35 瞬時に結果表示できるなら、それで問題ない。 データをとるたびにそれを繰り返してるってことでしょ。 Excelって小学生並みのアホなグラフしか描けないのに何で使うのかな 商品として優れてるからだろ。 いい製品なんて大抵ゴミだし。 >>37 まぁ、コピペの部分ぐらいはマクロ使うかな。 あんま、話題ないんね。 なんか良い入門ないかな。 28だけど、研究室に布教しようと努力中。。 最近使いはじめたよ。 便利でキレイでいいね。 gnuplot みたいな手軽さは無いけど。 サクっとグラフを見たいときは gnuplot で 貼り付けたい時なんかは、もう Matplotlib だね。 入門書と言えばBeginning Python Visualization位しか持ってないんだけど、 他にある? この本でもChapter 6で扱ってるだけ。 あんまり詳しくない。 もっと網羅的な奴ないかな。 matplotlib でplot 出力するのは たいてい png な説明がでてるけど ps/eps にしてもなんか"画像(ラスタイメージ)"になってるね? 細かいデータを打って拡大すると ticとかが同じ線幅のはずなのに太かったり細かったりって なっちゃうのはどうにかならないのかな? (savefig で dpi=200 とかしてもダメみたい…) あと,"真ん中あたりに小さくグラフが描画される" けど もっと出力サイズ一杯に描画する方法ないんでしょうか? (.ps だと a4目一杯) savefig にはそういうオプションなさそうだけど… 手元の環境では普通にベクトルデータで生成されるよ。svgはどう? あれ,そうですか. 確かに ps データのなかを改めて見ると そんな感じに見えますね… orz うーんなんでだろう. gv で見るときの問題なのかなぁ... matplotlib で line なグラフを描くとき 線種って結構限られていますよね? 実線('-') 破線('-.') 点線(':') gnuplot だと(指定方法が色とごっちゃになってる問題はありますが) 10種類以上くらいの破線種類なんかがあったりしますが, 破線の種類なんかをもっと沢山用意してプロットするのは できないんでしょうか? -・-・- とか −−・−−・−−・−− とか line の属性をほいほいっと弄れば出来るとか… (line1, ) = plot([1, 2, 3], [3, 4, 5]) line1.set_dashes((2, 1, 2, 1, 2, 5)) # インクのon/offを交互に指定 savefig("asdf.png") もっといい方法があるかもしれないですが くだすれPython(超初心者用)から来ました。 オライリーの「集合知プログラミング」にnumpyを使った非負値行列因子分解と言うのがあるのですが (ソースは英語版ですが http://examples.oreilly.com/9780596529321/ から落とせます)、 これを乗法的更新ルールというので行うと http://pc12.2ch.net/test/read.cgi/tech/1256350845/785 のようにすぐにNaNになってしまいます (10回に一回のprint costを毎回print costするようにすると3周目でnanになるようです)。 このスレの方ならnumpyのことをご存知で無いかと思い質問したしだいです。よろしくお願いします。 ソースコードは10章のnmf.py(データ取得部はnewsfeatures.py)を見てください。 >>51 numpy-1.4.0-win32-superpack-python2.6 をインストールしました。 >>52 nnmf.pyを落としてきて,ちょっと見てみたけど 29行目のループ終了条件 if cost == 0: break を if cost < 1e-8: break とかにすればいいんじゃない? >>53 レスありがとうございます。ただcosr==0も終了条件なのですが、 繰り返し回数の最大はiterで引数で与えているので、あまり関係ないかと。 3回繰り返すとnanが出てくるようです。 いやこれ繰り返し回数じゃなくて 二乗距離でしょ? かえてやってみたのかと まぁいいや >>55 すみませんおっしゃる事が良くわかりません。 これってcostのことですか?iterのことですか?それ以外ですか? >>53 の変更はやってみたのですが、結果は変わりませんでしたが、 そういう意味ではないのでしょうか? >>56 そっか、変えてやってみてもダメでしたか。すまんかった。 書籍持ってなくてnnmf.pyをちら見しただけでコメントしたんだけど ウェイト更新とかかいてあるんで、ウェイト自体が微小になってしまうことを避ける 条件文なのかと思ってた。 いま改めてみると、ランダムに生成したWとHの積と 与えられたVが等しくなるかどうかのチェックなんだね。 ちょっとググってみて、非不値行列行列因子分解の乗法更新式に関する文献↓を流し読みしてみたけど http://www.brl.ntt.co.jp/people/kameoka/publications/Kameoka2009ASJ09.pdf ソースのアルゴリズムは文献のLS法どおりなので問題なさそう。 Pythonには組み込み関数の"iter"があるのに、引数名に"iter"を使っているとか 最初に"h"を生成しているリスト内包表記が、内側と外側で同じループ変数名を使っているとか スタイルで気になるところはあるけど。 "h"と"w"を更新している箇所は要素同士の計算なので h, hn, hdやw, wn, wdのある要素[i,j]を更新前後で表示してみれば NaNになる理由がわかると思うよ。 >>57 print デバッグですね。分りました。 >>51 factorize(..) の引数にはどんなデータを与えているんだ。 俺の環境:Enthought python 2.5 では下のように小さな値の行列でも NaN は出てこない python temp.py from numpy import * def difcost(a,b):   dif=0   for i in range(shape(a)[0]):     for j in range(shape(a)[1]):       # Euclidean Distance       dif+=pow(a[i,j]-b[i,j],2)   return dif def factorize(v,pc=10,iter=50):   ic=shape(v)[0]   fc=shape(v)[1]   # Initialize the weight and feature matrices with random values   w=matrix([[random.random() for j in range(pc)] for i in range(ic)])   h=matrix([[random.random() for i in range(fc)] for i in range(pc)])   # Perform operation a maximum of iter times 続く   for i in range(iter):     wh=w*h         # Calculate the current difference     cost=difcost(v,wh)         if i%10==0: print cost         # Terminate if the matrix has been fully factorized     if cost==0: break         # Update feature matrix     hn=(transpose(w)*v)     hd=(transpose(w)*w*h)       h=matrix(array(h)*array(hn)/array(hd))     # Update weights matrix     wn=(v*transpose(h))     wd=(w*h*transpose(h))     w=matrix(array(w)*array(wn)/array(wd))       return w,h import scipy as sc print factorize(sc.randn(10,10)/1000) & nbsp;には最後にセミコロン付ける必要があるぞw そういえば統計方面の R言語のスレってどこかの板にある? あるなら関連スレとして参照しておくくらいは欲しい wxバックエンドの場合、 どうやってバックグラウンドカラーを変更できるの (デフォはグレイ)? コード書きましたようはこんな感じでやりたいんですが def downyahoo(): date1 = datetranslate("2009/02/18") date2 = datetranslate(time.strftime("%Y/%m/%d")) quotes=[] quotes = matplotlib.finance.quotes_historical_yahoo(^GSPC, date1, date2, False, True, None) fig = figure() ax = fig.add_subplot(111) matplotlib.finance.candlestick(ax, quotes, 0.2, 'r', 'k') matplotlib.finance.volume_overlay3(ax, quotes) ax.xaxis_date() fig.autofmt_xdate() show() def datetranslate(date): d = date.split('/') startDate = datetime.date(int(d[0]),int(d[1]),int(d[2])) return startDate def main(): downyahoo() >>68 volume_overlay3はメンテされてないみたい ほとんど同じ内容の "candlestick2" を参考にして volume_overlay3を書き直してみたよ http://codepad.org/vvKwA6wO >>69 ありがとうございます。本家よりこっちの方が進んでいると言うことですかw date2numした数字をdate2numで元に戻したいのですが、 dates=[matplotlib.dates.num2date(d[i][0]).date() for i in range(len(d)) if d[i][5]==d[i][5]] とやると、printしたときにdatesの中に [datetime.date(2010, 2, 25), … datetime.date(2010, 3, 1)] とか入るんですが、これを ['2010, 2, 25',…'2010, 3, 1'] のように短くしたいのですが、どうやればいいか教えて下さい。 matplotlibスレがあるなんて思わなかった! この本買ったけど、基礎的な事を学ぶには良かったよ。 Matplotlib for Python Developers http://www.amazon.co.jp/Matplotlib-Python-Developers-Sandro-Tosi/dp/1847197906 Qt4のWidgetとする方法とか、参考になった。 2次元グラフ作成ソフト「Ngraph for Windows」がフリーソフト化 ttp://www.forest.impress.co.jp/docs/news/20100303_352467.html >>74 strftime(%Y/%m/%d)で出来ました。ありがとう。 吾も情報を落とすことにするか。 >>76 早速 "Matplotlib for Python Developers" を手に入れてみた(英語版)。 Web アプリや Matplotlib のグラフィックインターフェースへの組み込み方の 説明に力を入れてはいるものの、肝心の matplotlib の活用/応用系のチャプターは 短絡的すぎる。実際、そもそも作者の言う "advanced" は "basic" レベル止まりで、 全体的に内容が浅くなっている件は否定できない。 もし興味があれば ttp://www.amazon.com/Beginning-Python-Visualization-Transformation-Professionals/dp/1430218436/ も平行して読んでみると良いかもしれん (こちらも初歩的なプロティングしか触れていない) が、 個人的に、 ttp://matplotlib.sourceforge.net/gallery.html を参照するのが 上達の一番の近道だと思っている。 >>81 確かに内容浅いね。広く浅くという感じか。 俺は結局公式ドキュメントやexamples、場合によっては本体のソースを見ながらやってる。 意外に欲しいメソッドが無かったりするね。 例えば、tick labelのフォントを変えたりとか。 figureの保持するlegendを取得するメソッドも無い。axesにはあるのに。 まぁ、俺が知らないだけかも知れないけど。 結構どんどん追加されていってるからね 伊達にv1.0未満じゃないというか… オンラインドキュメント調べて あれこの機能が動作しないと思ったら 最新版じゃないと駄目だったなんてよく起きるし あるねぇ。 リリース版では「class IndexFormatter」も「Formatter」を継承してなくて、動くはずのものがエラーになった。 gnuplotとGhostscript と GSviewあたりを最新版にしたら、うまくPNGとか作成されなくなった 色々と設定し直せばいいんだが、面倒になったきた そこで、pythonで別のグラフ作成方法ないかと思って、これにたどり着いたが・・・ python3使ってるわ・・・残念 >>25 これ他方法でもできないかな Pythonで学ぶ萌え萌え統計学 ー 正規分布からマルコフ連鎖モンテカルロまで 2300円 そういやこのスレ忘れ去られているんでネタ投下 scipy conference japan やろうぜって話が python workshop で出てましたねー この界隈に興味ある人はいるのかな? numpyとmatplotlibがPython3に対応したようですね。 Python(x,y)とMacPortsでも対応したら本気出す>3 質問させてください。 matplotlib で グラフのフレームの色を変更することは可能でしょうか? ・やりたいことは背景色を黒、メモリなどを白としたい。 1.Figureに facecolor='black'を指定し、set_axis_bgcolorで黒を 指定することで背景を黒にできました。 2.set_xticklabels, set_yticklabelsで白を指定しメモリの数字は 白くできました。 しかし、枠およびメモリ自体を白くする方法がわかりません。 わかる方おられましたら、お願いします。 >>91 numpyは1.5で対応したみたいですね。 matplotlibは、2.7までのようです。 matplotlibで関数の動きって表現できる? 例えばy = sinx * nとして nが1から10まで動くとどうなるかっていうのを動的に表現したいんだけど できますが nが1から10まで動くと 振幅が変わるだけではないでしょうか ごめん 例えが悪かったわ 結局は関数を更新していってその動きを見たいんだけど そういうのはmatplotlibに組み込まれてる機能でできるの? よければ参考になるページとか教えて貰いたいんだが なんのために汎用言語であるpythonを使っているんだ? for i in range(10): draw_hoge() time.sleep(1) 自己解決 #個々のグラフ領域の枠を白くする ax = fig.add_subplot(1, 1, 1) for child in ax.get_children(): if isinstance(child, matplotlib.spines.Spine): child.set_color('white') #X軸Y軸のメモリの色を白くする #メジャーとマイナーは一度には変更できないみたい #なので2回に分けて行う for liney in ax.yaxis.get_ticklines(minor=True): liney.set_color('white') for liney in ax.yaxis.get_ticklines(minor=False): liney.set_color('white') 線の色指定をするときに、任意のカラーマップから色を指定することって可能? Gray Scaleの場合は、color = '0.75'のようにすればいいけど、 そこを別のカラーマップで0-1の間の数値を入れて指定できるようにしたいです。 二項分布とか正規分布とかを正確に表示したいときは自分で関数つくんないとダメ? >>105 scipy.stats以下にたくさん分布関数がある Python3に対応したから、初めて使ってみたらmatplotlibすげー 軽くgnuplotみたいに画面で直接拡大とかも出来るんだな >>100 ,102 同じところで詰まった… スレッドとか必要なのかな Tkでやってた時もよくわからなくてpygameに逃げた 出来た出来た 適当にバラまいたノードがランダムに動くプログラム でも重すぎるのか途中で処理が止まる… 本当はノード数を1000以上にしたいのに それと、きちんと再描画されてなく、毎回、点が増えていく… pylab.ion() NodeN=int(input("ノード数入力:")) lisNode =[0]*NodeN for n in range(NodeN): lisNode[n]=random.randint(-200,200),random.randint(-200,200) for i in range(100): pylab.plot([x for x in lisNode] ,[y for y in lisNode],"*") pylab.draw() lisNode=[[lisNode[n][0]+random.randint(-1,1),lisNode[n][1]+random.randint(-1,1)] for i in range(NodeN)] 上書きがデフォルトなので、毎回図をクリアする必要がある。 あと、そのプログラムが望む動作をするかどうか、落ち着いてコードを読み直してみてね pylab.plot([x[0] for x in ……… ですね。 手打ちで書いてたので間違えました。 とりあえず、処理が止まらなければ望む動きはしています。 上書きを除いて 画面の図、クリアを調べてみます 外枠を太くしてgnuplotと体裁が同じになるようにしたい 何か方法ないのかな >>110 こんな感じでやると、描写中の図を動かそうとすると止まっちゃうんだけどPCスペック低いからかな? あと描写スピードが遅いのと最後に自動で図が消えちゃうのってどうすればいい? >>114 >描写中の図を動かそうとすると止まっちゃう 知らんがな >描写スピードが遅い プログラムが悪いか、データ点が多すぎるか >最後に自動で図が消えちゃう たぶんあなたが消してる >>110 は真似しない方が・・・ >>114 >110のプログラムは試してないからよくは分からないけど。。 windowを動かすと描画が止まる、ってことなら、うちでもそうなる。おそらくバックエンド部分のバグじゃないかと疑ってる。最期に消えちゃうのは、プログラム最後にshow()を入れると止められる。 >>115 >>116 ありがと やっぱ動かすと止まっちゃうのね import matplotlib.pyplot as plt import random plt.ion() x = [0]*100 y = [0]*100 random.seed(); for i in range(100): x[i] = random.randint(-100, 100) y[i] = random.randint(-100, 100) plt.axis([-110, 110, -110, 110]) plt.grid(True) for i in range(len(x)): plt.plot(x[i], y[i] , 'kD') plt.draw() plt.show() これで100個プロット打つのに9秒くらいかかるんだけどこんなものかな あとshow入れても最後にはやっぱ消えちゃうわ >>117 show()の前にioff()を入れると画面は消えない。 >>117 plt.ion()はコメントアウトして、 importの下からplt.show()まで時間計ったら0.15秒 for i in range(len(x)): plt.plot(x[i] (ry の部分を、for文やめて plt.plt(x,y,'kD') に変更して、0.1秒 Windows7 SP1 32bit i3 550 3.20GHz メモリ 2G Python3.1 >>121 元の動機が図をダイナミックに更新したい、ということだからそれだと意味なくない? Gridのmajorとminorの線種をそれぞれ別で指定する方法ありますか? windowsだとtkですら、途中で応答無くなるのなんとかならないかな eps化してtexに貼りたいんですが、texのフォントを(Computer Modern)を使うことは可能ですか? またpdf化の際に埋め込めますか? ttp://matplotlib.sourceforge.net/users/image_tutorial.html の例(をsubplotsを使って書き直そうとしたもの)なんですが、カラーバーの位置がおかしいです。 どうしてax[0].figureで欲しいものが取れないのでしょうか? ========================= import matplotlib.pyplot as plt import matplotlib.image as mpimg img = mpimg.imread('stinkbug.png') fig,ax = plt.subplots(ncols=2) ax[0].set_aspect(1) img1 = ax[0].imshow(img[:,:,0]) ax[0].figure.colorbar(img1,orientation ='horizontal') plt.show() ごり押しでいけた。 plt.subplot(ax[0]).figure.colorbar(img1,orientation ='horizontal') ・・・明らかに設計ミスだと思うんだけど。 subplot 121, 122 で分けてるのですが、 左右の余白大きすて調整したいです。 subplots_adjust では埋められません。 ほかに何かいい方法はありませんか。 type 1フォントをベクトルデータでepsに埋め込めませんか? > 元の動機が図をダイナミックに更新したい、ということだからそれだと意味なくない? ハッアァァァァァァァァァァァァァァアァ?????????????? なるほどゴミなわけだ ゴミじゃねーか 死ねよゴミ >>130 matplotlibrcをいじってみるとかはどう? これCUIオンリーの環境じゃ動かないの? /var/lib/python-support/python2.5/gtk-2.0/gtk/__init__.py:72: GtkWarning: could not open display からずらずらエラーで動かないよ plt.savefig("a.png")だけでもダメなのかな show()であかんのは納得するんだけど。。 >134 同じく… あきらめて X11 環境下でのみ作業してる たまに ssh login してグラフの作り直しだけしたい みたいなときに不便なので対策があったら知りたい >>134 >>136 だめだね import matplotlib.pyplot as plt これ一行だけで落ちるからX必須みたいだ どうにかならんか調べてみます いやあの>>135 をですね import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt plt.plot([1,2,3,4]) plt.ylabel('some numbers') plt.savefig('somenum.png') >>138 すいません135の意味がよくわからなかったのです。 import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt ありがとうございます。 解決しました Numpy/Scipy,Matplotlibのチュートリアル的なサイトって http://www.ike-dyn.ritsumei.ac.jp/ ~uchida/scipy-lecture-notes/index.html 実際ここくらいですか? numplotlib初心者です。 CentOS5のPython2.6上で使いたいのですが、 numpyインストール後matplotlib入れようと するとド頭の環境チェックでnumpy: noとか 出ちゃってインストールできません。 numpyは1.6.1、matplotlibは1.0.1のtar拾ってきて どちらもsetup.py installで入れようとしています。 numpy.arangeとかの結果は返ってくるので numpyは一応入ったようなのですが、 こういう場合の対処方法ありませんか? 自己解決しました。 setup.py実行時に実行フォルダ内のゴミを 拾ってしまっていたようで、一旦cleanして 再度installしたところ無事に入りました。 白黒印刷用の棒グラフを作りたいのですが、 ハッチング等の白黒パターンで棒を塗り潰す ことって可能でしょうか? matplotlibはデフォルトで2つのデータ点を直線で結びますが、 一部分だけ線を引かないようにすることは出来ますか。 gnuplotなら、渡すデータを 1 1 2 2 3 3 4 4 のように空行を挟んどけば、(2,2)と(3,3)はwith lineの対象外になるのですが >>145 matlabだとnanなら線が途切れるな 去年辺りから、海外ではNumpy,Scipy,matplotlibを既存の科学用DSLの代替にしよう、 って流れが盛んですね。 米アマゾンでも、けっこうな勢いで解説書が出てるし。 既に全部、非公式ながらPython3にも対応して、前途も有望そう。 このスレも、この辺の統合スレにしたほうが盛り上がりそうですけど、 2年間で140レスか・・・ Rのスレは数学板にしかないし、ム板では盛り上がらないのかな? ム板なんてITドカタしかいないからな まともに数学の話出来る訳がない Rやmaximaあってもいいけどな。 >>147 そういった本ほんと盛んだよな。でももっとやすうなってくれんかな と思ってしまう。Pythonは科学関連のライブラリはかなりほうふだから 基盤として使えるようにしておくといいよね。 p3 に対応したのか。 xlabelとylabelの位置が軸から離れすぎちゃう ことがあるんだけど、たとえば xlabel.hogehoge(0.5,-0.2)みたいな書式で 表示位置を指定する方法はありませんか? python2.6とmatplotlib0.99を使っています。 subplotで6個のグラフを作成し、 titleは、日本語で入れました。 その後、グラフをPSファイルで出力しようとしましたが出来ませんでした。 PNGファイルでは出力できます。 PS、PDFで出力することは可能でしょうか?教えてください。 >>154 savefigで拡張子を.pdfにすればPDFで、 .epsにすればEPSで出力できるはず。 WindowsのPython2.7、Linuxの同2.6で確認済み。 公式ドキュメントにはPDF、PS、PNG、SVGに 対応とあるが、.psだとだめだった記憶がある。 EPSで出力できればどうにでもなる気もするが。 windows 64bit版がamdしかないけど、intel cpuでも大丈夫なのかな? intel EM64T は amd x64 のパクリ matploblib.axis.set_ticks(ticks)ぐらいしか思いつかん excelもそうだけど、デフォルトの目盛が多すぎだよね matplotlibわかりづれえよ なんかpythonっぽくないと言うか でも他に無いからありがたく使ってるんですけどね‥ >>162 こうしたい、って思った出力が得られるまで かなり試行錯誤が必要な気はする。 寸法とかpxとinch混在しててややこしい。 あと、インストールはgnuplotの方が楽かな。 WinやMacならスタンドアロンのバイナリも 落ちてるし。 ただ、matplotlibrcをカスタマイズしまくって、 出力されたEPSをさらにPythonでいじくってる ような俺にとって、matplotlibほど融通のきく グラフ描画ツールは他にない。 もっとユーザ増えれば楽しくなりそうなのだが。 不満を挙げるとすれば、rcParamでいじれる項目が バージョンによって結構違ったりすることかな。 ググってきたTipsが手元のバージョンだと使えない なんてことがよくあるんだけど、俺だけかな? なんつーか,ややこしくいじるときの設定がややこしい (柔軟な分,axis とか fig とかいろいろな概念を理解して それのつつき方を知っている必要がある) あと,最初にきれいじゃなくていいからとりあえず おまかせコースで「データファイルとりあえずプロットしろ」の 段階のお手軽さも負けてる(gnuplot比) もちろん,python で好きなようにいじれる, numpy とかのデータいじり環境と一体化できる, というのがメリットなんだけど 習得には >>164 のいうように少し時間がかかるけど、 グラフ描画を関数化して再利用性を上げたり、 widget として GUI アプリに統合できたり、便利すぎる。 そういえば棒グラフの描き方を調べないといけないんだった 半年くらい忘れてた dashes=[4,1,2,1] line=ax.plot(x, y, linestyle="--") line[0].set_dashes(dashes) とか書くと破線のフォーマットを自由に 変更できますよね? 同じことを等高線でやりたいのですが、 set_dashes()のような命令はどのような書式で 行えばいいのでしょうか? 現状の(デフォルトの)破線を適用しているコードは こんな感じです。 cs=matplotlib.contour(x, y, z) zc=CS.collections[0] zc.set_linestyle("--") #ここでset_dashesしたい。 2年近くネタ枯渇か 順調に使われてると思うんだけど… node.js & R node.js & octave peg.js, D3.js こんにちは。 凡例の文字列に日本語フォントを使いたいのですが、うまくいきません。 例があればご教授いただけないでしょうか。 フォントに日本語を表示できる物に変えれば良かったはず。 iPhthon Notebookチラ裏 for Windows ・インストール 依存ライブラリがたくさんある 個別にパッケージ化したサイトもあるけどWinPythonを入れるのが簡単 要らないものもたくさん入っているので展開すると1GBくらい ・起動するとデフォルトブラウザではなくIEが立ち上がる ・ブラウザが起動するときインターネットにつながっていないとダメ 起動の度に何かを外から拾ってきてブラウザをレンダリングしている ・Notebookの名前を日本語にするとそのNotebookは開けなくなる 実体は個別の.ipynbファイルとして (インスートルディレクトリ)¥WinPython-バージョン番号¥python-バージョン番号¥Scripts¥ にある、ここのファイル名をASCIIに書き換えると即時ブラウザに反映される .ipynb_checkpoints¥フォルダ以下に同名のチェックポイントファイルもある ・簡単なスクリプトでグラフを書いても結構大量にメモリを食う 256点の一次元配列数個でグラフを描いて50-250MBくらい これを気にしなければAtomタブレットでも使える ・セル内の文字選択がマウスだけではうまくいかないことがある? マウスとキーボードの両方必要 ソフトキーボードでは簡単な編集はできるけど文字選択できないの マウスとソフトキーボードでもたぶん文字選択できないの >>144 これありますか?パターンで塗りつぶしができれば白黒印刷に便利なのですが、ギャラリーにも見あたらないし、検索してもこのレスぐらいしか引っかからないので半分諦めていますが… matplotlib fill hatching で画像検索 やり方わかったら教えてね ;-) >>182 やりたかったことが実現できました。どうもありがとう。公式含めてもっとちゃんと探さないとだめですね。失礼しました python - How do I plot hatched bars using pandas? - Stack Overflow http://stackoverflow.com/questions/22833404/how-do-i-plot-hatched-bars-using-pandas df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd']) ax = plt.figure(figsize=(10, 6)).add_subplot(111) df.plot(ax=ax, kind='bar', legend=False) bars = ax.patches hatches = ''.join(h*len(df) for h in 'x/O.') for bar, hatch in zip(bars, hatches): ?? ?? bar.set_hatch(hatch) ax.legend(loc='center right', bbox_to_anchor=(1, 1), ncol=4) Ruby3には静的な型を導入するかもだって 理由は最近生まれたスクリプト言語が静的型を持ってるからって・・なんじゃその理由 後方互換なんて関係ねぇーそんなの関係ねぇー、おっバッッカーッ このスレPyQtGraphの話ってしてもいいのかな オライリーのある本にmatplotlibのbasemapは shapefile形式の地図を読み込んで描画できるって書いてあったんだけど http://metro.teczno.com/#osaka-kyoto ここの大阪の道路と電車の地図を読み込むことができない windowsだと途中で応答無くなるのなんとかならないかな パソコンによって微妙にグラフ出力(軸名の太さなど)が違うのはどうやれば対処できますか? OSの違いではないでしょうか? 環境を書いて下さい。 >>192 同じOSでUSBとHDDに保存しているwinpythonにて実行しました。(どちらも同じバージョン) すると、やはり軸タイトルが太字になっていたりします。(同じスクリプト) OSの関係については、同じパソコンでも日によって先述の症状が出たりするのでわかりません matplotlib使って、リアルタイムに送られたデータを元にグラフ作成は可能でしょうか? ion ioff pause draw relim >>196 有難うございます。 頑張ってみます。 親切にありがとう。 質問:scipyのインストール方法を教えてください。 Windows10にPython3.5.1をインストールして、numpyやらをpipでインストールしたのですが scipyはエラーとなってしまいインストールできません。色々調べて、 ttp://typea.info/blg/glob/2015/09/windows-virtualenv-python27-pip-wheel-scipywindows.html のサイトを参考にpy -m pip install c:\user\hoge\scipy-0.17.0-cp35-none-win_amd64.whl で無事にインストールできました。できたのですが、何かおかしいのです。 >>> import scipy.misc Traceback (most recent call last): File File "<pyshell#7>", line 1, in <module> import scipy.misc File "C:\Program Files\Python\Python35\lib\site-packages\scipy\misc\__init__.py", line 51, in <module> from scipy.special import comb, factorial, factorial2, factorialk File "C:\Program Files\Python\Python35\lib\site-packages\scipy\special\__init__.py", line 627, in <module> from ._ufuncs import * ImportError: DLL load failed: 指定されたモジュールが見つかりません。 他にもscipy.linalgがありません。皆さんはどのようにscipyをインストールしたのでしょうか。教えてください。 >>201 ありがとうございます。Anaconda知りませんでした、早速インストールして無事にimport scipy.miscが通りました。 その後に、Anacondaを入れる前から入っているPython(以下、生Pythonとする)でも、scipy.miscが通るようになりました。 何故だろうと調べてみるとAnacondaが設定した環境変数(C:\Anaconda3;C:\Anaconda3\Scripts;C:\Anaconda3\Library\bin)の おかげでした。これを消すと、生Pythonではimport scipy.miscでエラーとなります。AnacondaのPythonはこの環境変数が無くても scipy.miscが通ります。 ということで、>>199 でscipyをinstallして、かつ、Anacondaもインストールすれば生Pythonの方もscipyが使えるようになります。 >>202 私も>>199 でインストールできてimport scipyは通るのですが、import scipy.miscはエラーとなる状態でした。 Anacondaをインストールすることで、これも通るようになりました。 >>> import scipy >>> import scipy.misc 問題ないなー つい先週くらいから仕事でpythonを覚えることになり、vagrantでCentOS6.8でpyenvとvirtualenvで下記の環境を作りました。 python: 3.5.2 pandas: 0.18.1 numpy: 1.11.1 matplotlib: 1.5.1 ta-lib http://matplotlib.org/examples/pylab_examples/finance_demo.html を参考にローソク足は出力できました。 ローソク足と同じプロットの中に移動平均線がうまく出せずに詰まってます。 データはMySQLからpandas.io.sqlで取得しています。 移動平均線は、 sma5 = pd.Series(df['close']).rolling(window=5) sma5.mean().plot(ax=ax) でやってみました。 ta-libでも試しましたが、ローソク足と移動平均線を出力すると、 右端と左端に縮まって表示されてしまいます。 どこかに参考になるサイトやソースがあれば教えていただきたいです。 長文で失礼しました。 >右端と左端に縮まって表示されてしまいます。 画像貼るかソース貼るかなんかしろよ >208 207です、すみませんでした。 %matplotlib inline import pandas as pd import numpy as np import talib as ta import matplotlib.pyplot as plt from matplotlib.finance import candlestick_ohlc import pymysql.cursors import pandas.io.sql as psql # print(df) # date start high low close #0 2016-01-04 18818.6 18951.1 18394.4 18451.0 #1 2016-01-05 18398.8 18547.4 18327.5 18374.0 #2 2016-01-06 18410.6 18469.4 18064.3 18191.3 dates = df['date'] tmp = df['date'].values.astype('datetime64[D]') df['date'] = tmp.astype(float) plt.figure(figsize=(10, 6)) ax = plt.subplot(111) plt.xticks(df['date'][::60],[x.strftime('%Y-%m-%d') for x in dates][::60]) plt.grid() candlestick_ohlc(ax,df.values,width=0.7,colorup='red',colordown='blue') sma5 = pd.Series(df['close']).rolling(window=5) sma5.mean().plot() plt.show() http://qiita.com/ynakayama/items/badbf9804835d2da425e ここのページのような感じで出力させたいです。 期待されてるデータはこんな感じっぽい index start close high low ああ違うな 期待されてるデータはこんな感じっぽい index start close low high >>211 ありがとうございます。 ヒントを頂いて、色々試しまして期待通りの出力ができました。 sma5 = pd.Series(data=df['close']).rolling(window=5).mean() ax.plot(df['date'],sma5) 211さんの書き込みがなければ、ググり方の発想すら出てこなかったので、 本当に助かりました。ありがとうございました。 このようなシンプルな白黒の画像があります http://i.imgur.com/jEgghPx.png これを下記のコードで表示すると from PIL import Image as image import matplotlib.pyplot as plt import numpy as np im = np.array(image.open('jEgghPx.png')) plt.imshow(im) plt.show() こんなヘンな赤青の図になってしまいます。 http://imgur.com/a/l9Ifw 何とかしてもとの白黒で正しく表示できないものでしょうか from scipy import misc def mm(im): ..for y in range(len(im)): ....for x in range(len(im[y])): ......if 10 < y < 12: im[y][x] = x * 511 / len(im[y]) ......if 10 < x < 12: im[y][x] = y * 511 / len(im) ..return im (略) im2 = misc.toimage(im, cmin=0, cmax=511) plt.imshow(mm(np.uint32(im2))) (略) >>214 のはネタだけど im = np.array(image.open('jEgghPx.png')) plt.imshow(im) plt.gray() plt.show() でもイケる ありがとうございます。 >>214 キラーンとなりました >>215 元のモノクロで表示されました 白黒表示目的は>>215 で達成できたのですが、>>214 が気になります x=11の列、y=11の列の値を511倍してそれぞれ列サイズ(28)、行サイズ(28)で割るとなぜキラーンとなるのでしょうか? しかも全体の色味も変わって見えます im2 = misc.toimage(im, cmin=0, cmax=511) plt.imshow(np.uint32(im2)) と比べてごらん あとこんなのでも行けるはず def m(im): ..im[0][0] = 0 ..im[len(im)-1][len(im[y])-1] = 511 ..return im (略) im2 = misc.toimage(im, cmin=0, cmax=511) plt.imshow(m(np.uint32(im2))) (略) こんなのでも逝ける from scipy import misc def mmm(im): ..for y in range(len(im)): ....for x in range(len(im[y])): ......im[y][x] = 511 - im[y][x] ..im[0][0] = 0 ..im[len(im)-1][len(im[y])-1] = 511 ..return im (略) im2 = misc.toimage(im, cmin=0, cmax=511) plt.imshow(mmm(np.uint32(im2))) (略) matplotlibで簡単なGUIのアプリケーションを自作しようと考えています そこでボタンを押したときにキャンバスの中央に点がでるようなGUIを作成しようとしているのですが from numpy.random import rand import matplotlib.pyplot as plt from matplotlib.widgets import Button fig = plt.figure() ax = fig.add_subplot(111) plt.subplots_adjust(bottom=0.2) class Index(object): def next(self, event): xdata = event.xdata ydata = event.ydata plt.plot(0,0,color="red",marker="o") plt.draw() axnext = plt.axes([0.81, 0.05, 0.1, 0.075]) bnext = Button(axnext, 'circle') bnext.on_clicked(Index().next) plt.show() サイトを参考に以上のように組んではいるのですが ボタンを押した際ボタンの方の中央にプロットされてしまいます これをキャンバスの方の中央にプロットするにはどのようにしたらよいでしょうか? 欲を言えばボタンを押した後に中央のキャンバス上でクリックした場所に赤い点を出したいです >キャンバスの中央に点がでるような class Index(object): def __init__(self, ax): self.ax = ax def next(self, event): xdata = event.xdata ydata = event.ydata self.ax.plot(0, 0, color="red", marker="o") plt.draw() (略) bnext.on_clicked(Index(ax).next) >キャンバス上でクリックした場所に垢移転 class Index(object): def __init__(self, ax): self.ax = ax def next(self, event): xdata = event.xdata ydata = event.ydata self.ax.plot(xdata, ydata, color="red", marker="o") plt.draw() (略) axnext = plt.axes([0.81, 0.05, 0.1, 0.075]) fig.canvas.mpl_connect('button_press_event', Index(ax).next) (略) #最初にクリックしたときだけ、どの場所クリックしても中央になるのは座標軸の方が変化するからっぽい。 >>221 >>222 回答ありがとうございます 参考にして書いて見た結果ボタンを押した位置に応じた場所に点がでるようになりました 度々ですみませんが今度は 1度ボタンを押した後、大きいキャンバスのどこかを2度目のクリックをしたときそこに 1度だけ点がでるようにしたいです ここからどう変えれば良いでしょうか?(イメージとしてはボタンを押すと,次のクリックの入力待ちになるイメージです from numpy.random import rand import matplotlib.pyplot as plt from matplotlib.widgets import Button fig = plt.figure() ax = fig.add_subplot(111) plt.subplots_adjust(bottom=0.2) class Index(object): def __init__(self, ax): self.ax = ax def next(self, event): xdata = event.xdata ydata = event.ydata self.ax.plot(xdata, ydata, color="red", marker="o") plt.draw() axnext = plt.axes([0.81, 0.05, 0.1, 0.075]) fig.canvas.mpl_connect('button_press_event', Index(ax).next) bnext = Button(axnext, 'circle') bnext.on_clicked(Index(ax).next) plt.show() >>223 追加 聞いてばかりですみません、もう一つ聞きたいことがありまして ボタンを2つにした場合には fig.canvas.mpl_connectをどうつなげるべきなのでしょうか? class Index1(object): def __init__(self, ax): self.ax = ax def next(self, event): xdata = event.xdata ydata = event.ydata self.ax.plot(xdata, ydata, color="red", marker="o") plt.draw() def prev(self, event): xdata = event.xdata ydata = event.ydata self.ax.plot(xdata, ydata, color="blue", marker="o") plt.draw() axnext = plt.axes([0.81, 0.05, 0.1, 0.075]) axprev = plt.axes([0.11, 0.05, 0.1, 0.075]) fig.canvas.mpl_connect('button_press_event', Index(ax).???) bnext = Button(axnext, 'red') bnext.on_clicked(Index(ax).next) bnext = Button(axprev, 'blue') bnext.on_clicked(Index(ax).prev) 割とマジでレスするけど >>221-222 が判らなかったのはともかく それが解決してるのに >>223-224 が判らないっていうのは 相当知能に問題があるぞ 自分でできないなら向いてない あきらめろ >>225 指摘していただきましてすみません >>224 の方は クラスをもう一つ作り fig.canvas.mpl_connect('button_press_event', Index(ax).next) fig.canvas.mpl_connect('button_press_event', Index(ax).prev) で解決しました. こちらに関しては少し変えたりなどで試行せずに質問してしまっていたため 申し訳なく思います ただ>>223 の方が http://retrofocus28.blogspot.jp/2012/07/matplotlib.html こちらを組み合わせながら行っても上手くいかず 入力待ちの方法が思い浮かばなかったために質問させていただいております もしよろしければもう少しお付き合いください >>226 のものです >>223 について不器用な感じではありますがカウンターを用いて解決しました ご迷惑をおかけしましてすみません グラフ描画機能は matplotlibとRのggplot2は どっちが優れてますか? pandas使ったらさあ、ちょっと前なのにパラメータがrows, colsからindexとcolumnに変わってたりと 大して意味のない気まぐれな変更多くて修正めんどくさくて大変だった いったん決めたインターフェースは簡単に変えるなよ すみません、 テラタームでログインして、サーバ上でPythonを触っているのですが、 その場合、Matplotlibで作成したグラフはどのようにしたら表示できますか? 一番簡単なのはjupyter notebook使うことだね。 3D版のScatterでvmax指定が効かないな… zticksも存在しないし 透明の点をプロットして拡げるしかないのか 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方 役に立つかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 UWPF3 matplotlib.plot にも sympy.geometory にも Polygon ってあるのな。 これをお互いに変換するのはどうしたらよいの? sympy からplot で良い。 sympy.geometry Polygon(Point2D(94, 31), Point2D(388, 157), Point2D(472, 199), Point2D(850, 598), Point2D(787, 897), Point2D(110, 927)) matplotlib.plot Polygon( [[ 94 31],[990 31],[990 927], [ 94 927]]) # np.array g = Polygon(Point2D(94, 31), Point2D(388, 157), Point2D(472, 199), Point2D(850, 598), Point2D(787, 897), Point2D(110, 927)) matplotlib.pyplot.Polygon(np.array(list(map(np.array, g.vertices)))) >>241 ありがとう。 なんとかかんとか自力でゴリゴリ変換してみてた。 参考にさせてもらいます。 g = Polygon(Point2D(94, 31), Point2D(388, 157), Point2D(472, 199), Point2D(850, 598), Point2D(787, 897), Point2D(110, 927)) matplotlib.pyplot.Polygon(g.vertices) これでええわ >>243 matplotlib ではPoint2Dは扱えないからダメでしょ。 hxy = np.array(list([i.x,i.y] for i in g.vertices)) とPoint2D(x,y) から (x,y) を取り出す必要がある。 つまり g = Polygon(Point2D(94, 31), Point2D(388, 157), Point2D(472, 199), Point2D(850, 598), Point2D(787, 897), Point2D(110, 927)) matplotlib.pyplot.Polygon(np.array(list([i.x,i.y] for i in g.vertices)) ) うそはいかん うちでは ax.add_patch(matplotlib.pyplot.Polygon(g.vertices)) で動いてる >>245 ごめんごめん、今のバージョンと古いバージョンの両方を使ってて、古い方で通らなかったから通らないものとして作ってた。 これで行けると色んな場面で楽になるな。 初心者で申し訳ないのですが、ここにいる天才達に質問です マットプロットリブでリアルタイムの棒グラフの作成って可能ですか? matplotlibでリアルタイムはクソ遅いので、用途次第だと思う Matplotlib&Seaborn実装ハンドブック 4798055433 >>250 そうなんですね。遅いのですか・・・ それならリアルタイムグラフを作成するのにおすすめの物ってなんですか? https://inagoflyer.appspot.com/btcmac ↑このようなものを自分なりにもっと見やすくわかりやすく作りたいのですがおすすめってどのようなものですか?教えていただけると助かります。 >>254 なるほど。 プログラム初心者なんで教えてほしいのですが、自分でコードを書いてからどこに作成したコードを張り付ければ このようなグラフが出てくるようになるのですか? >>255 自分のPCで良いだろ。 他人に常時見せたいならサーバを借りる。 ボタンで画面を切り替えてグラフ表示したいのですが、画面1はグラフが1つ、画面2はグラフが2つあります。下のようにやってみましたが、グラフが重なったりWarningが出たりしてうまくいきません。どのようにするとよいでしょうか? import numpy as np import tkinter as tk import matplotlib.pyplot as plt from matplotlib.widgets import Slider def b1(): plt.cla() ax=fig.add_subplot(111) x=np.arange(0,10,0.1) y=np.sin(x) ax.plot(x,y) plt.show() def b2(): plt.cla() ax1=fig.add_subplot(211) ax2=fig.add_subplot(212) x=np.arange(0,20,0.1) y=np.sin(x**2) y2=np.sin(np.sqrt(x))*2 ax1.plot(x,y) ax2.plot(x,y2) plt.show() root=tk.Tk() btn1=tk.Button(root,text='1',command=b1) btn2=tk.Button(root,text='2',command=b2) btn1.grid(column=0,row=0) btn2.grid(column=1,row=0) fig=plt.figure(figsize=(8,4)) root.mainloop() plt.show() もループするから root.mainloop() と相性悪いんじゃね あと fig もグローバルになってるから 各ボタンで重なる可能性はあるので 根本的に描き直す必要があるな 同じ場所に上書きで良いならこっちか https://pastebin.com/Bxd3C1hF plt.cla() -> plt.clf() に注意 >>259-263 ソースまで貼っていただいてありがとうございます。 まさにこれがやりたかったんです〜。 show()じゃなくてcanvas.draw_idle()ってのを使うんですか。 pauseは消えるまで次の描画を待たないといけないということでしょうか。 (並列処理している?) やっばりwebの見よう見まねじゃなくて体系的に学ばないといけませんね。 pauseの行を消すと何も表示されなくなるよ そもそもなんでpauseって名前になってるのか判らんが むしろpauseは待つんじゃなくてshowとは違って一瞬だけ書いて消して 次の処理をやってくれる感じ axvline で書き込んだ垂直線を あとから消す(クリア)することはできますか? color_list = ['darkblue', 'grey', 'darkred', 'darkred', 'darkred'] hatch_list = ['/', '//', '/', '//', '/'] plt.bar(left, height, color=color_list, hatch=hatch_list, width=width, tick_label=labels, align='center') 上のコードでハッチが表示されません 最後の一行で直接hatch='/'と指定すればOKなのですが、 リストを使ってハッチの指定はできないのでしょうか? >>270 以前Qiitaで色をlist形式で表示してたのを真似してグラフ作ってたので、 ハッチも同じくlistでいけるかと思ったのですが・・・ 一つずつ指定するしかないのかな seabornなどの戻り値でaxesだけいくつか受け取った時、画像を保存するのに一番早い方法は何でしょうか?現状は fig,ax=plt.subplots() として、axに戻り値を代入してfig.savefigしています >>15 実測したらmatplotlibは18倍くらい掛かった 生成するグラフが多いと問題ある ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる