Matplotlib でグラフプログラミング【Python】
■ このスレッドは過去ログ倉庫に格納されています
>>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) (略) #最初にクリックしたときだけ、どの場所クリックしても中央になるのは座標軸の方が変化するからっぽい。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる