1

Xの一連の値に対してプロットを散布したい約15のシリーズがあります。

ただし、シリーズの一部の値については、何もプロットしたくありません。シリーズの長さが同じになるようにダミーとして使用できる値はありますが、matplotlib はその点をプロットしませんか?

たとえば[1,2,3,4,5,6,7,8,9]、x 軸があり、Y 軸にシリーズがあり、['a', 'b', 'c', 'd', 'e', foo, 'g','h','i']foo を 6 に対してプロットしたくない場合、foo をプロットされない値に置き換えたいと思います。

x と y の値は日時であることを指摘しておく必要があります。私はそれが必要な情報であるとは思っていませんでしたが、NaN はフロートのプロットには機能しますが、日時には機能しないようです。

4

4 に答える 4

2

scatter値は無視されますnumpy.nan(「数値ではありません」)。

>>> import matplotlib.pyplot as plt
>>> from numpy import nan
>>> x = range(5)
>>> y = [10, nan, 15, 14, 12]
>>> plt.scatter(x, y)
>>> plt.show()
于 2012-09-17T13:26:02.853 に答える
0

あなたが使用することができますNone

>>> import matplotlib.pyplot as plt
>>> plt.plot( [1,2,None,4,5],[1.1,2.2,3.3,4.4,5.5],'ro' )
[<matplotlib.lines.Line2D object at 0x29f6d50>]
>>> plt.show()
>>> 
于 2012-09-17T11:45:37.983 に答える
0

を呼び出しplot_dateて渡すとvisible=False、シリーズがプロットされたかのように軸が設定されますが、データ ポイントが表示されないようにプロットが非表示になります。

multi_plot_data_with_dates 興味があれば、ここでメソッドを見ることができます -説明したのと同じ問題があったと思いますが、この実装はうまくいくようです。

于 2013-03-20T02:57:23.783 に答える
0

これを解決するために、Nonesをダミー値として使用し、作成しました

def find_indices(haystack, needle):
  return [i for i,x in enumerate(haystack) if needle == x]

def remove_at(xs, indices):
  return [x for i,x in enumerate(xs) if i not in indices]

その後

nones_at = find_indices(y_values, None)
x_values = remove_at(x_axis, nones_at)
y_values = remove_at(y_values, nones_at)
pyplot.plot(x_values, y_values)
于 2012-09-17T12:22:37.223 に答える