Matplotlib でグラフプログラミング【Python】
1 :
デフォルトの名無しさん :
2009/10/24(土) 21:06:22
このスレッドは天才チンパンジー「アイちゃん」が 言語訓練のために立てたものです。 アイと研究員とのやり取りに利用するスレッドなので、 関係者以外は書きこまないで下さい。 京都大学霊長類研究所
3 :
デフォルトの名無しさん :2009/10/24(土) 21:07:30
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 の方が簡単。
Debianでmatplotlibインストールしたら、バージョンが0.98.1だったぁ! 3次元プロットがギリできない〜
三次元空間において、 曲面 z = f(x,y)と 曲面 z = g(x,y) が交わる曲線をプロットする良い方法はあるかな?
これ良くできてるけど、意外と知られてないよね。 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]
15 :
デフォルトの名無しさん :2009/10/27(火) 05:16:57
matplotlibはpythonのライブラリだけど、 コアな計算部分は numpy や PIL だから、 中身は大体Cの部分が実行されてるよね? スピードはgnuplotと比べてどのぐらい違うんだろうか?
16 :
12 :2009/10/27(火) 12:12:57
>>13-14 ありがとう!だいぶ短くなるんですね。
pythonを使うのが初めてなので、まず言語の勉強から始めなければ。
>>13 NumPyでこんなスライスができるのは知らなかった
18 :
デフォルトの名無しさん :2009/10/27(火) 22:45:51
これはまれにみる糞スレage
python 使いで gnuplot の限界を感じた人が 使うってだけじゃなくて matplotlib 自体がお目あてで 来る人もいるんだねぇ そういう人むけのチュートリアルとかが出来るといいね
Matplotlibでgriddataを使っているヒトいますか?ちゃんと動きますか? Debianにgriddataをソースからインストールしたのですが、 セグメントエラーを吐くようになってしまいました。
21 :
デフォルトの名無しさん :2009/11/06(金) 09:06:05
>>1 ギャラリーにSICPで見かけたおねえさんがw
lenaだよ
23 :
デフォルトの名無しさん :2009/11/06(金) 18:15:36
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も)
VBで出来ないことまで出来るよねw
Fランク大学は放置しる
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") もっといい方法があるかもしれないですが
49 :
デフォルトの名無しさん :2010/01/15(金) 17:07:16
ソースコードは10章のnmf.py(データ取得部はnewsfeatures.py)を見てください。
numpyのバージョンは?
>>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 デバッグですね。分りました。
59 :
デフォルトの名無しさん :2010/01/19(火) 18:16:55
>>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
続く
60 :
デフォルトの名無しさん :2010/01/19(火) 18:17:35
  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言語のスレってどこかの板にある? あるなら関連スレとして参照しておくくらいは欲しい
ここにあったのを見た覚えがある
66 :
デフォルトの名無しさん :2010/02/22(月) 15:15:45
wxバックエンドの場合、 どうやってバックグラウンドカラーを変更できるの (デフォはグレイ)?
67 :
デフォルトの名無しさん :2010/02/27(土) 10:59:30
68 :
67 :2010/02/28(日) 02:31:01
コード書きましたようはこんな感じでやりたいんですが 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()
>>69 ありがとうございます。本家よりこっちの方が進んでいると言うことですかw
72 :
デフォルトの名無しさん :2010/03/03(水) 17:27:23
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'] のように短くしたいのですが、どうやればいいか教えて下さい。
num2dateで元に戻したいでした…
strftime
matplotlibスレがあるなんて思わなかった!
>>74 strftime(%Y/%m/%d)で出来ました。ありがとう。
本なんてあるんだ。
とりあえずお布施で買っておくか
81 :
Zeno ◆5nZQbNmQPs :2010/03/04(木) 16:28:01
>>81 確かに内容浅いね。広く浅くという感じか。
俺は結局公式ドキュメントやexamples、場合によっては本体のソースを見ながらやってる。
意外に欲しいメソッドが無かったりするね。 例えば、tick labelのフォントを変えたりとか。 figureの保持するlegendを取得するメソッドも無い。axesにはあるのに。 まぁ、俺が知らないだけかも知れないけど。
結構どんどん追加されていってるからね 伊達にv1.0未満じゃないというか… オンラインドキュメント調べて あれこの機能が動作しないと思ったら 最新版じゃないと駄目だったなんてよく起きるし
あるねぇ。 リリース版では「class IndexFormatter」も「Formatter」を継承してなくて、動くはずのものがエラーになった。
gnuplotとGhostscript と GSviewあたりを最新版にしたら、うまくPNGとか作成されなくなった
色々と設定し直せばいいんだが、面倒になったきた
そこで、pythonで別のグラフ作成方法ないかと思って、これにたどり着いたが・・・
python3使ってるわ・・・残念
>>25 これ他方法でもできないかな
87 :
デフォルトの名無しさん :2010/05/12(水) 11:06:47
Pythonで学ぶ萌え萌え統計学 ー 正規分布からマルコフ連鎖モンテカルロまで 2300円
そういやこのスレ忘れ去られているんでネタ投下 scipy conference japan やろうぜって話が python workshop で出てましたねー この界隈に興味ある人はいるのかな?
90 :
デフォルトの名無しさん :2010/12/27(月) 04:25:56
hage
91 :
デフォルトの名無しさん :2011/01/30(日) 02:38:10
numpyとmatplotlibがPython3に対応したようですね。
まじで
PILはまだか
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に組み込まれてる機能でできるの? よければ参考になるページとか教えて貰いたいんだが
101 :
デフォルトの名無しさん :2011/03/05(土) 13:52:37.64
ふう
なんのために汎用言語であるpythonを使っているんだ? for i in range(10): draw_hoge() time.sleep(1)
103 :
96 :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')
線の色指定をするときに、任意のカラーマップから色を指定することって可能? Gray Scaleの場合は、color = '0.75'のようにすればいいけど、 そこを別のカラーマップで0-1の間の数値を入れて指定できるようにしたいです。
二項分布とか正規分布とかを正確に表示したいときは自分で関数つくんないとダメ?
>>105 scipy.stats以下にたくさん分布関数がある
Python3に対応したから、初めて使ってみたらmatplotlibすげー 軽くgnuplotみたいに画面で直接拡大とかも出来るんだな
お、 Python3 対応きたんだあ。
>>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 ……… ですね。 手打ちで書いてたので間違えました。 とりあえず、処理が止まらなければ望む動きはしています。 上書きを除いて 画面の図、クリアを調べてみます
113 :
デフォルトの名無しさん :2011/05/12(木) 11:49:54.78
外枠を太くして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
drawが時間喰ってる@Python2.7
>>121 元の動機が図をダイナミックに更新したい、ということだからそれだと意味なくない?
Gridのmajorとminorの線種をそれぞれ別で指定する方法ありますか?
124 :
123 :2011/05/17(火) 19:46:58.24
解決しました
windowsだとtkですら、途中で応答無くなるのなんとかならないかな
横軸の線の先を矢印にすることって出来ませんか?
eps化してtexに貼りたいんですが、texのフォントを(Computer Modern)を使うことは可能ですか? またpdf化の際に埋め込めますか?
128 :
デフォルトの名無しさん :2011/06/28(火) 17:44:57.28
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()
129 :
128 :2011/06/28(火) 18:03:15.11
ごり押しでいけた。 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
ありがとうございます。 解決しました
うへ,なにこれ すげーボリューム
numplotlib初心者です。 CentOS5のPython2.6上で使いたいのですが、 numpyインストール後matplotlib入れようと するとド頭の環境チェックでnumpy: noとか 出ちゃってインストールできません。 numpyは1.6.1、matplotlibは1.0.1のtar拾ってきて どちらもsetup.py installで入れようとしています。 numpy.arangeとかの結果は返ってくるので numpyは一応入ったようなのですが、 こういう場合の対処方法ありませんか?
143 :
142 :2011/09/13(火) 11:17:01.71
自己解決しました。 setup.py実行時に実行フォルダ内のゴミを 拾ってしまっていたようで、一旦cleanして 再度installしたところ無事に入りました。
144 :
142 :2011/09/14(水) 23:24:10.47
白黒印刷用の棒グラフを作りたいのですが、 ハッチング等の白黒パターンで棒を塗り潰す ことって可能でしょうか?
145 :
デフォルトの名無しさん :2011/10/28(金) 12:52:21.33
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のスレは数学板にしかないし、ム板では盛り上がらないのかな?
Rは昔ここにもあった
ム板なんてITドカタしかいないからな まともに数学の話出来る訳がない
Rやmaximaあってもいいけどな。
>>147 そういった本ほんと盛んだよな。でももっとやすうなってくれんかな
と思ってしまう。Pythonは科学関連のライブラリはかなりほうふだから
基盤として使えるようにしておくといいよね。
p3 に対応したのか。
wekaとscipyどっちがオヌヌメ?
152 :
デフォルトの名無しさん :2011/12/06(火) 22:27:37.37
scipyかな
xlabelとylabelの位置が軸から離れすぎちゃう ことがあるんだけど、たとえば xlabel.hogehoge(0.5,-0.2)みたいな書式で 表示位置を指定する方法はありませんか?
154 :
デフォルトの名無しさん :2011/12/21(水) 01:11:08.13
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 のパクリ
158 :
デフォルトの名無しさん :2011/12/24(土) 18:18:03.13
目盛幅の指定はどうやるのでしょうか?
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 とかのデータいじり環境と一体化できる, というのがメリットなんだけど
あとチト遅いような気がするな。
166 :
デフォルトの名無しさん :2012/01/13(金) 00:19:06.31
習得には
>>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したい。
oppy
171 :
デフォルトの名無しさん :2012/10/11(木) 20:10:07.37
tes
172 :
デフォルトの名無しさん :2013/11/21(木) 19:06:57.78
あげ
173 :
デフォルトの名無しさん :2013/11/22(金) 17:08:32.79
酷い過疎っぷりだな・・・
2年近くネタ枯渇か 順調に使われてると思うんだけど…
176 :
デフォルトの名無しさん :2013/11/29(金) 13:11:39.35
svg
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には静的な型を導入するかもだって 理由は最近生まれたスクリプト言語が静的型を持ってるからって・・なんじゃその理由 後方互換なんて関係ねぇーそんなの関係ねぇー、おっバッッカーッ
あ、スレまちがえた、、失礼w