1

サブプロット ( self.intensity) の場合、グラフの下の領域を陰影付けしたいと思います。

正しい構文であることを期待して、これを試しました:

self.intensity.fill_between(arange(l,r), 0, projection)

整数の制限projection内でnumpy配列のシェーディングを行うつもりです。(l,r)

しかし、それは私にエラーを与えます。正しく行うにはどうすればよいですか?


トレースバックは次のとおりです。

Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_wx.py", line 1289, in _onLeftButtonDown
    FigureCanvasBase.button_press_event(self, x, y, 1, guiEvent=evt)
  File "/usr/lib/pymodules/python2.7/matplotlib/backend_bases.py", line 1576, in button_press_event
    self.callbacks.process(s, mouseevent)
  File "/usr/lib/pymodules/python2.7/matplotlib/cbook.py", line 265, in process
    proxy(*args, **kwargs)
  File "/usr/lib/pymodules/python2.7/matplotlib/cbook.py", line 191, in __call__
    return mtd(*args, **kwargs)
  File "/root/dev/spectrum/spectrum/plot_handler.py", line 55, in _onclick
    self._call_click_callback(event.xdata)
  File "/root/dev/spectrum/spectrum/plot_handler.py", line 66, in _call_click_callback
    self.__click_callback(data) 
  File "/root/dev/spectrum/spectrum/plot_handler.py", line 186, in _on_plot_click
    band_data  = self._band_data)
  File "/root/dev/spectrum/spectrum/plot_handler.py", line 95, in draw
    self.intensity.fill_between(arange(l,r), 0, projection)
  File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 6457, in fill_between
    raise ValueError("Argument dimensions are incompatible")
ValueError: Argument dimensions are incompatible
4

1 に答える 1

3

lからrまでの投影の部分を埋めようとしているようです。fill_betweenは、x配列とy配列が同じ長さであることを想定しているため、曲線の一部のみを塗りつぶすことは期待できません。

必要なものを取得するには、次のいずれかを実行できます。1.入力する必要のあるプロジェクションの一部のみをコマンドに送信します。残りの投影を個別に描画します。2.入力するセクションを定義する引数として別のブール配列を送信します。ドキュメントを参照してください。

前者の方法については、以下のサンプルコードを参照してください。

from pylab import *

a = subplot(111)

t = arange(1, 100)/50.
projection = sin(2*pi*t)

# Draw the original curve
a.plot(t, projection)
# Define areas to fill in
l, r = 10, 50
# Fill the areas
a.fill_between(t[l:r], projection[l:r])
show()
于 2012-06-14T12:13:29.350 に答える