Matplotlib でグラフプログラミング【Python】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/10/24(土) 21:06:22高機能で柔軟性があり、使い易く、数式表示がデフォルトで可能で、
美しいグラフが作成できる人気のグラフライブラリである Matplotlib
のスレッドです。
ギャラリー
http://matplotlib.sourceforge.net/gallery.html
http://matplotlib.sourceforge.net/users/screenshots.html
ユーザーズガイド
http://matplotlib.sourceforge.net/contents.html
ダウンロード
http://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-0.99.1/
0002デフォルトの名無しさん
2009/10/24(土) 21:07:25言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
0003デフォルトの名無しさん
2009/10/24(土) 21:07:30gnuplot 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 の方が簡単。
0004デフォルトの名無しさん
2009/10/24(土) 21:14:560005デフォルトの名無しさん
2009/10/24(土) 21:18:52google、インデックス早っ!
もう既にこのスレが検索結果(結構上位)に引掛ってるし。
ttp://www.google.com/search?q=matplotlib&hl=ja&lr=lang_ja
0006デフォルトの名無しさん
2009/10/24(土) 21:29:063次元プロットがギリできない〜
0007デフォルトの名無しさん
2009/10/24(土) 21:29:49曲面 z = f(x,y)と
曲面 z = g(x,y)
が交わる曲線をプロットする良い方法はあるかな?
0008デフォルトの名無しさん
2009/10/24(土) 21:34:20普通に同じaxesにfとgを加えればいいでしょ。
使ったことないけど、 ax.add_collection3d 見てみれば?
ttp://matplotlib.sourceforge.net/examples/mplot3d/polys3d_demo.html
0009デフォルトの名無しさん
2009/10/25(日) 01:16:42gnuplotだけで頑張ってる人は一見の価値あり。
0010デフォルトの名無しさん
2009/10/25(日) 09:58:48matplotlibって何か簡潔で分かり易いのない?
0011デフォルトの名無しさん
2009/10/25(日) 11:25:20ちょっと遊んでみます。
0012デフォルトの名無しさん
2009/10/25(日) 21:55:41こっちでは自分で全部書かないといけないのかな?
自分は↓こうしているんだけど、もっと簡単な方法ってある?
#!/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 ] ) )
0013デフォルトの名無しさん
2009/10/26(月) 03:49:21テキスト形式を読みこむ関数はある(実際はmatplotlibのバックエンドのnumpyの機能)。
import pylab
data = pylab.loadtxt("data.dat", comments="#")
X, Y, Z = data[:,(5, 6, 8)]
0014デフォルトの名無しさん
2009/10/26(月) 04:00:13即席で書いたやつだが、こうすれば良し。
LL = [ line.strip().split() for line in file('data.dat') ]
columns = map(list, zip(*LL))
columns[4], columns[5], column[18]
0015デフォルトの名無しさん
2009/10/27(火) 05:16:57matplotlibはpythonのライブラリだけど、
コアな計算部分は numpy や PIL だから、
中身は大体Cの部分が実行されてるよね?
スピードはgnuplotと比べてどのぐらい違うんだろうか?
0017デフォルトの名無しさん
2009/10/27(火) 17:19:13NumPyでこんなスライスができるのは知らなかった
0018デフォルトの名無しさん
2009/10/27(火) 22:45:510019デフォルトの名無しさん
2009/10/28(水) 23:16:55使うってだけじゃなくて matplotlib 自体がお目あてで
来る人もいるんだねぇ
そういう人むけのチュートリアルとかが出来るといいね
0020デフォルトの名無しさん
2009/11/01(日) 02:19:36Debianにgriddataをソースからインストールしたのですが、
セグメントエラーを吐くようになってしまいました。
0021デフォルトの名無しさん
2009/11/06(金) 09:06:05ギャラリーにSICPで見かけたおねえさんがw
0022デフォルトの名無しさん
2009/11/06(金) 12:15:540023デフォルトの名無しさん
2009/11/06(金) 18:15:36皆さんどうやってますか?
0024デフォルトの名無しさん
2009/11/06(金) 18:20:08うーん・・・。
背景にしたいの?
0025デフォルトの名無しさん
2009/11/06(金) 18:29:56たとえば入力した画像の明るさを読み取って、ある値以上の明るさの画素は白、他は黒にして出力
などといった画像処理につなげたいのですが…
0026デフォルトの名無しさん
2009/11/06(金) 19:34:28import scipy.misc
m = scipy.misc.imread("grayscale.png")
pylab.imshow(m < 127)
pylab.savefig("output.png")
こんなんでどう?
0027デフォルトの名無しさん
2009/11/06(金) 22:28:28おお!ありがとうございます!
今ちょっと手元に無いので明日試してみます
0028デフォルトの名無しさん
2009/11/08(日) 02:46:26「なんでそんな聞いたこともない言語使うの?VBでいいじゃん」
って言われてしまった。理系だったらPythonのがいいと思うんだけどなぁ。。。
0029デフォルトの名無しさん
2009/11/08(日) 02:56:200030デフォルトの名無しさん
2009/11/08(日) 02:57:45情弱 プギャー w
でよかったんじゃね?
0031デフォルトの名無しさん
2009/11/08(日) 03:27:41両方使えるのがいい。
VBはExcel操作できるから、知っていれば意外と使える。
0032デフォルトの名無しさん
2009/11/08(日) 10:57:210033デフォルトの名無しさん
2009/11/08(日) 11:30:120034デフォルトの名無しさん
2009/11/08(日) 11:50:400035デフォルトの名無しさん
2009/11/08(日) 11:51:530036デフォルトの名無しさん
2009/11/12(木) 18:17:20瞬時に結果表示できるなら、それで問題ない。
0037デフォルトの名無しさん
2009/11/12(木) 19:11:150038デフォルトの名無しさん
2009/11/12(木) 19:23:590039デフォルトの名無しさん
2009/11/12(木) 20:27:31いい製品なんて大抵ゴミだし。
0040デフォルトの名無しさん
2009/11/12(木) 21:44:39まぁ、コピペの部分ぐらいはマクロ使うかな。
0041デフォルトの名無しさん
2009/11/16(月) 13:26:05なんか良い入門ないかな。
28だけど、研究室に布教しようと努力中。。
0042デフォルトの名無しさん
2009/11/16(月) 13:30:01便利でキレイでいいね。
gnuplot みたいな手軽さは無いけど。
サクっとグラフを見たいときは gnuplot で
貼り付けたい時なんかは、もう Matplotlib だね。
0043デフォルトの名無しさん
2009/11/17(火) 07:53:32他にある?
この本でもChapter 6で扱ってるだけ。
あんまり詳しくない。
もっと網羅的な奴ないかな。
0044デフォルトの名無しさん
2009/12/01(火) 11:22:44たいてい png な説明がでてるけど
ps/eps にしてもなんか"画像(ラスタイメージ)"になってるね?
細かいデータを打って拡大すると
ticとかが同じ線幅のはずなのに太かったり細かったりって
なっちゃうのはどうにかならないのかな?
(savefig で dpi=200 とかしてもダメみたい…)
あと,"真ん中あたりに小さくグラフが描画される" けど
もっと出力サイズ一杯に描画する方法ないんでしょうか?
(.ps だと a4目一杯)
savefig にはそういうオプションなさそうだけど…
0045デフォルトの名無しさん
2009/12/01(火) 12:06:020046デフォルトの名無しさん
2009/12/01(火) 12:59:46確かに ps データのなかを改めて見ると
そんな感じに見えますね… orz
うーんなんでだろう.
gv で見るときの問題なのかなぁ...
0047デフォルトの名無しさん
2010/01/14(木) 09:27:49線種って結構限られていますよね?
実線('-') 破線('-.') 点線(':')
gnuplot だと(指定方法が色とごっちゃになってる問題はありますが)
10種類以上くらいの破線種類なんかがあったりしますが,
破線の種類なんかをもっと沢山用意してプロットするのは
できないんでしょうか?
-・-・- とか −−・−−・−−・−− とか
line の属性をほいほいっと弄れば出来るとか…
0048デフォルトの名無しさん
2010/01/14(木) 16:27:03line1.set_dashes((2, 1, 2, 1, 2, 5)) # インクのon/offを交互に指定
savefig("asdf.png")
もっといい方法があるかもしれないですが
0049デフォルトの名無しさん
2010/01/15(金) 17:07:16オライリーの「集合知プログラミング」に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のことをご存知で無いかと思い質問したしだいです。よろしくお願いします。
0050デフォルトの名無しさん
2010/01/15(金) 17:15:540051デフォルトの名無しさん
2010/01/15(金) 18:29:380052デフォルトの名無しさん
2010/01/16(土) 00:53:45numpy-1.4.0-win32-superpack-python2.6
をインストールしました。
0053デフォルトの名無しさん
2010/01/16(土) 13:15:11nnmf.pyを落としてきて,ちょっと見てみたけど
29行目のループ終了条件
if cost == 0: break
を
if cost < 1e-8: break
とかにすればいいんじゃない?
0054デフォルトの名無しさん
2010/01/17(日) 06:13:27レスありがとうございます。ただcosr==0も終了条件なのですが、
繰り返し回数の最大はiterで引数で与えているので、あまり関係ないかと。
3回繰り返すとnanが出てくるようです。
0055デフォルトの名無しさん
2010/01/17(日) 08:53:54二乗距離でしょ?
かえてやってみたのかと
まぁいいや
0056デフォルトの名無しさん
2010/01/17(日) 10:54:49すみませんおっしゃる事が良くわかりません。
これってcostのことですか?iterのことですか?それ以外ですか?
>>53 の変更はやってみたのですが、結果は変わりませんでしたが、
そういう意味ではないのでしょうか?
0057デフォルトの名無しさん
2010/01/17(日) 13:51:06そっか、変えてやってみてもダメでしたか。すまんかった。
書籍持ってなくて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になる理由がわかると思うよ。
0058デフォルトの名無しさん
2010/01/18(月) 17:33:11print デバッグですね。分りました。
0059デフォルトの名無しさん
2010/01/19(火) 18:16:55俺の環境: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
続く
0060デフォルトの名無しさん
2010/01/19(火) 18:17:35    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)
0061デフォルトの名無しさん
2010/01/29(金) 09:36:080062デフォルトの名無しさん
2010/02/12(金) 09:12:090063デフォルトの名無しさん
2010/02/17(水) 12:53:49あるなら関連スレとして参照しておくくらいは欲しい
0064デフォルトの名無しさん
2010/02/17(水) 14:00:060065デフォルトの名無しさん
2010/02/17(水) 14:03:02http://science6.2ch.net/test/read.cgi/math/1224142396/
0066デフォルトの名無しさん
2010/02/22(月) 15:15:45どうやってバックグラウンドカラーを変更できるの
(デフォはグレイ)?
0067デフォルトの名無しさん
2010/02/27(土) 10:59:30http://d.hatena.ne.jp/noazoh/20091023/1256293199
を参考にローソク足チャートを描きました。また
http://matplotlib.sourcearchive.com/documentation/0.90.1/namespacematplotlib_1_1finance_828611c3468bfc1d1b336155704f4b12.html#828611c3468bfc1d1b336155704f4b12
を見て、quotesにvolumeの値を加えれば、volume_overlay3 がそのまま使えると思ったのですが、
実際に描画してみると、全部同じ高さの棒になってしまいます(上に突き抜けてる?)。
どなたかこのvolume_overlay3の使い方が分かる方いらっしゃいませんでしょうか。
006867
2010/02/28(日) 02:31:01def 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()
0069デフォルトの名無しさん
2010/02/28(日) 17:50:19volume_overlay3はメンテされてないみたい
ほとんど同じ内容の "candlestick2" を参考にして
volume_overlay3を書き直してみたよ
http://codepad.org/vvKwA6wO
0070デフォルトの名無しさん
2010/02/28(日) 18:10:55思いっきり無視されてるんで、メンテされていないのかなと
http://www.mail-archive.com/[email protected]/msg12590.html
0071デフォルトの名無しさん
2010/02/28(日) 23:28:07ありがとうございます。本家よりこっちの方が進んでいると言うことですかw
0072デフォルトの名無しさん
2010/03/03(水) 17:27:23dates=[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']
のように短くしたいのですが、どうやればいいか教えて下さい。
0073デフォルトの名無しさん
2010/03/03(水) 17:30:160074デフォルトの名無しさん
2010/03/03(水) 18:12:130075デフォルトの名無しさん
2010/03/03(水) 21:31:100076デフォルトの名無しさん
2010/03/03(水) 22:07:11Matplotlib for Python Developers
http://www.amazon.co.jp/Matplotlib-Python-Developers-Sandro-Tosi/dp/1847197906
Qt4のWidgetとする方法とか、参考になった。
0077デフォルトの名無しさん
2010/03/04(木) 07:52:49ttp://www.forest.impress.co.jp/docs/news/20100303_352467.html
0078デフォルトの名無しさん
2010/03/04(木) 11:37:02strftime(%Y/%m/%d)で出来ました。ありがとう。
0079デフォルトの名無しさん
2010/03/04(木) 12:35:120080デフォルトの名無しさん
2010/03/04(木) 15:30:330081Zeno ◆5nZQbNmQPs
2010/03/04(木) 16:28:01吾も情報を落とすことにするか。
>>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 を参照するのが
上達の一番の近道だと思っている。
0082デフォルトの名無しさん
2010/03/04(木) 21:05:57確かに内容浅いね。広く浅くという感じか。
俺は結局公式ドキュメントやexamples、場合によっては本体のソースを見ながらやってる。
0083デフォルトの名無しさん
2010/03/05(金) 20:33:20例えば、tick labelのフォントを変えたりとか。
figureの保持するlegendを取得するメソッドも無い。axesにはあるのに。
まぁ、俺が知らないだけかも知れないけど。
0084デフォルトの名無しさん
2010/03/06(土) 00:00:21伊達にv1.0未満じゃないというか…
オンラインドキュメント調べて
あれこの機能が動作しないと思ったら
最新版じゃないと駄目だったなんてよく起きるし
0085デフォルトの名無しさん
2010/03/06(土) 22:54:12リリース版では「class IndexFormatter」も「Formatter」を継承してなくて、動くはずのものがエラーになった。
0086デフォルトの名無しさん
2010/05/09(日) 21:12:20色々と設定し直せばいいんだが、面倒になったきた
そこで、pythonで別のグラフ作成方法ないかと思って、これにたどり着いたが・・・
python3使ってるわ・・・残念
>>25
これ他方法でもできないかな
0087デフォルトの名無しさん
2010/05/12(水) 11:06:47http://gauc.no-ip.org/awk-users-jp/blis.cgi/DoukakuAWK_114
http://gauc.no-ip.org/awk-users-jp/blis.cgi/DoukakuAWK_254
を参考にしたら出来そうな気がする.
0088デフォルトの名無しさん
2010/05/16(日) 14:43:450089デフォルトの名無しさん
2010/12/24(金) 15:50:18scipy conference japan やろうぜって話が
python workshop で出てましたねー
この界隈に興味ある人はいるのかな?
0090デフォルトの名無しさん
2010/12/27(月) 04:25:560091デフォルトの名無しさん
2011/01/30(日) 02:38:100092デフォルトの名無しさん
2011/01/30(日) 02:39:150093デフォルトの名無しさん
2011/01/30(日) 05:36:090094デフォルトの名無しさん
2011/01/30(日) 18:03:550095デフォルトの名無しさん
2011/02/01(火) 00:10:14対応してねーじゃねぇか、ぷんすか。
0096デフォルトの名無しさん
2011/02/24(木) 18:01:22.07matplotlib で グラフのフレームの色を変更することは可能でしょうか?
・やりたいことは背景色を黒、メモリなどを白としたい。
1.Figureに facecolor='black'を指定し、set_axis_bgcolorで黒を
指定することで背景を黒にできました。
2.set_xticklabels, set_yticklabelsで白を指定しメモリの数字は
白くできました。
しかし、枠およびメモリ自体を白くする方法がわかりません。
わかる方おられましたら、お願いします。
0097デフォルトの名無しさん
2011/03/03(木) 22:38:15.74numpyは1.5で対応したみたいですね。
matplotlibは、2.7までのようです。
0098デフォルトの名無しさん
2011/03/04(金) 16:36:25.26例えばy = sinx * nとして
nが1から10まで動くとどうなるかっていうのを動的に表現したいんだけど
0099デフォルトの名無しさん
2011/03/04(金) 19:24:19.40nが1から10まで動くと
振幅が変わるだけではないでしょうか
0100デフォルトの名無しさん
2011/03/05(土) 00:47:43.99結局は関数を更新していってその動きを見たいんだけど
そういうのはmatplotlibに組み込まれてる機能でできるの?
よければ参考になるページとか教えて貰いたいんだが
0101デフォルトの名無しさん
2011/03/05(土) 13:52:37.640102デフォルトの名無しさん
2011/03/06(日) 19:02:55.04for i in range(10):
draw_hoge()
time.sleep(1)
010396
2011/03/16(水) 16:51:06.66#個々のグラフ領域の枠を白くする
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')
0104デフォルトの名無しさん
2011/03/22(火) 13:24:03.28Gray Scaleの場合は、color = '0.75'のようにすればいいけど、
そこを別のカラーマップで0-1の間の数値を入れて指定できるようにしたいです。
0105デフォルトの名無しさん
2011/03/27(日) 13:27:24.410106デフォルトの名無しさん
2011/03/27(日) 14:11:39.66scipy.stats以下にたくさん分布関数がある
0107デフォルトの名無しさん
2011/04/25(月) 15:02:35.40軽くgnuplotみたいに画面で直接拡大とかも出来るんだな
0108デフォルトの名無しさん
2011/04/25(月) 15:09:27.890109デフォルトの名無しさん
2011/04/25(月) 15:35:17.49同じところで詰まった…
スレッドとか必要なのかな
Tkでやってた時もよくわからなくてpygameに逃げた
0110デフォルトの名無しさん
2011/04/25(月) 16:39:03.66適当にバラまいたノードがランダムに動くプログラム
でも重すぎるのか途中で処理が止まる…
本当はノード数を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)]
0111デフォルトの名無しさん
2011/04/25(月) 18:39:48.95あと、そのプログラムが望む動作をするかどうか、落ち着いてコードを読み直してみてね
0112デフォルトの名無しさん
2011/04/25(月) 20:06:07.41ですね。
手打ちで書いてたので間違えました。
とりあえず、処理が止まらなければ望む動きはしています。
上書きを除いて
画面の図、クリアを調べてみます
0113デフォルトの名無しさん
2011/05/12(木) 11:49:54.78何か方法ないのかな
0114デフォルトの名無しさん
2011/05/12(木) 22:55:32.05こんな感じでやると、描写中の図を動かそうとすると止まっちゃうんだけどPCスペック低いからかな?
あと描写スピードが遅いのと最後に自動で図が消えちゃうのってどうすればいい?
0115デフォルトの名無しさん
2011/05/12(木) 23:37:13.09>描写中の図を動かそうとすると止まっちゃう
知らんがな
>描写スピードが遅い
プログラムが悪いか、データ点が多すぎるか
>最後に自動で図が消えちゃう
たぶんあなたが消してる
>>110は真似しない方が・・・
0116デフォルトの名無しさん
2011/05/13(金) 00:10:12.82>110のプログラムは試してないからよくは分からないけど。。
windowを動かすと描画が止まる、ってことなら、うちでもそうなる。おそらくバックエンド部分のバグじゃないかと疑ってる。最期に消えちゃうのは、プログラム最後にshow()を入れると止められる。
0117デフォルトの名無しさん
2011/05/13(金) 01:50:14.28>>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入れても最後にはやっぱ消えちゃうわ
0118デフォルトの名無しさん
2011/05/15(日) 11:21:02.45show()の前にioff()を入れると画面は消えない。
0119デフォルトの名無しさん
2011/05/16(月) 15:50:46.45plt.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
0120デフォルトの名無しさん
2011/05/16(月) 21:24:39.240121デフォルトの名無しさん
2011/05/16(月) 21:29:50.63draw()もコメントアウトしてある
0122デフォルトの名無しさん
2011/05/16(月) 22:57:10.63元の動機が図をダイナミックに更新したい、ということだからそれだと意味なくない?
0123デフォルトの名無しさん
2011/05/17(火) 17:03:36.090124123
2011/05/17(火) 19:46:58.240125デフォルトの名無しさん
2011/05/23(月) 21:07:48.890126デフォルトの名無しさん
2011/05/24(火) 21:56:18.640127デフォルトの名無しさん
2011/06/13(月) 00:05:31.79またpdf化の際に埋め込めますか?
0128デフォルトの名無しさん
2011/06/28(火) 17:44:57.28の例(を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()
0129128
2011/06/28(火) 18:03:15.11plt.subplot(ax[0]).figure.colorbar(img1,orientation ='horizontal')
・・・明らかに設計ミスだと思うんだけど。
0130デフォルトの名無しさん
2011/06/29(水) 21:34:04.98左右の余白大きすて調整したいです。
subplots_adjust では埋められません。
ほかに何かいい方法はありませんか。
0131デフォルトの名無しさん
2011/06/30(木) 12:08:40.080132天使 ◆uL5esZLBSE
2011/07/02(土) 18:22:05.67ハッアァァァァァァァァァァァァァァアァ??????????????
なるほどゴミなわけだ
ゴミじゃねーか
死ねよゴミ
0133デフォルトの名無しさん
2011/07/06(水) 01:06:18.37matplotlibrcをいじってみるとかはどう?
0134デフォルトの名無しさん
2011/09/04(日) 21:06:24.11/var/lib/python-support/python2.5/gtk-2.0/gtk/__init__.py:72: GtkWarning: could not open display
からずらずらエラーで動かないよ
plt.savefig("a.png")だけでもダメなのかな
show()であかんのは納得するんだけど。。
0135デフォルトの名無しさん
2011/09/04(日) 21:57:56.62pngに変換するためのバックエンド(Agg)がインスコされてないんじゃない?
http://matplotlib.sourceforge.net/faq/installing_faq.html#backends
0136デフォルトの名無しさん
2011/09/05(月) 09:48:22.44同じく…
あきらめて X11 環境下でのみ作業してる
たまに ssh login してグラフの作り直しだけしたい
みたいなときに不便なので対策があったら知りたい
0137デフォルトの名無しさん
2011/09/06(火) 19:10:52.18>>136
だめだね
import matplotlib.pyplot as plt
これ一行だけで落ちるからX必須みたいだ
どうにかならんか調べてみます
0138デフォルトの名無しさん
2011/09/06(火) 19:33:23.38import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
plt.ylabel('some numbers')
plt.savefig('somenum.png')
0139デフォルトの名無しさん
2011/09/07(水) 09:18:37.63すいません135の意味がよくわからなかったのです。
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
ありがとうございます。 解決しました
0140デフォルトの名無しさん
2011/09/08(木) 23:15:48.01http://www.ike-dyn.ritsumei.ac.jp/~uchida/scipy-lecture-notes/index.html
実際ここくらいですか?
0141デフォルトの名無しさん
2011/09/09(金) 16:08:40.700142デフォルトの名無しさん
2011/09/13(火) 08:09:30.74CentOS5のPython2.6上で使いたいのですが、
numpyインストール後matplotlib入れようと
するとド頭の環境チェックでnumpy: noとか
出ちゃってインストールできません。
numpyは1.6.1、matplotlibは1.0.1のtar拾ってきて
どちらもsetup.py installで入れようとしています。
numpy.arangeとかの結果は返ってくるので
numpyは一応入ったようなのですが、
こういう場合の対処方法ありませんか?
0143142
2011/09/13(火) 11:17:01.71setup.py実行時に実行フォルダ内のゴミを
拾ってしまっていたようで、一旦cleanして
再度installしたところ無事に入りました。
0144142
2011/09/14(水) 23:24:10.47ハッチング等の白黒パターンで棒を塗り潰す
ことって可能でしょうか?
0145デフォルトの名無しさん
2011/10/28(金) 12:52:21.33一部分だけ線を引かないようにすることは出来ますか。
gnuplotなら、渡すデータを
1 1
2 2
3 3
4 4
のように空行を挟んどけば、(2,2)と(3,3)はwith lineの対象外になるのですが
0146デフォルトの名無しさん
2011/10/30(日) 09:51:54.81matlabだとnanなら線が途切れるな
0147デフォルトの名無しさん
2011/11/08(火) 11:52:07.56って流れが盛んですね。
米アマゾンでも、けっこうな勢いで解説書が出てるし。
既に全部、非公式ながらPython3にも対応して、前途も有望そう。
このスレも、この辺の統合スレにしたほうが盛り上がりそうですけど、
2年間で140レスか・・・
Rのスレは数学板にしかないし、ム板では盛り上がらないのかな?
0148デフォルトの名無しさん
2011/11/09(水) 13:53:06.660149デフォルトの名無しさん
2011/11/09(水) 14:35:55.50まともに数学の話出来る訳がない
0150デフォルトの名無しさん
2011/11/11(金) 21:13:14.56>>147
そういった本ほんと盛んだよな。でももっとやすうなってくれんかな
と思ってしまう。Pythonは科学関連のライブラリはかなりほうふだから
基盤として使えるようにしておくといいよね。
p3 に対応したのか。
0151デフォルトの名無しさん
2011/11/19(土) 12:41:07.850152デフォルトの名無しさん
2011/12/06(火) 22:27:37.37■ このスレッドは過去ログ倉庫に格納されています