1

同様の事実に基づく2つの問題があります。Matplotlibを使用して、その特定の領域で部分的に互いに重なり合っている線をプロットすると、そのうちの1つだけが表示されます。

例1

import matplotlib.pyplot as plt
plt.plot([1,2],[1,1],'r-')
plt.plot([1.5,3],[1,1],'b-')
plt.show()

例2

import matplotlib.pyplot as plt
plt.plot([0.5,3],[0,0],'b-',marker='o')
ax = gca()
ax.set_xlim(0.4)
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))
plt.show()

とにかく可能であれば、両方の線が見えるように、Matplotlibに1ピクセル間隔でプロットしてもらいたいと思います。

2つ目は、マーカーについても同じです。matplotlibをマーカーに設定したいと思います。マーカーは、ほとんど見えないため、互いに吹き飛ばして描画するには、ユークリッド空間の同じ場所に描画する必要があります。

前もって感謝します

4

2 に答える 2

0

データを不透明に変更しているため、データを少し変更することは本当に危険です(危険とは、非倫理的であることを意味します)。データをシフトする場合は、明らかなように大量にシフトする必要があります。

より良い解決策は、破線を使用することです。例:

import matplotlib.pyplot as plt
plt.plot([1,2],[1,1],'r-')
plt.plot([1.5,3],[1,1],'b--')
plt.show()

これにより、赤い実線の上に青い破線が表示されます(線のスタイルの例)。markevery( doc )と組み合わせて、マークされた点を線に沿って広げることができます。

于 2012-10-31T14:37:39.773 に答える
-1

すべてのデータポイントを小さな値でオフセットし、そのようにプロットする関数を作成できます。

import matplotlib.pyplot as plt

def offsetPlot(ax,x,y,*args,**kwargs):
    ylim = ax.get_ylim()
    offset = (ylim[1]-ylim[0])/125
    return [ax.plot(x,[q+offset for q in y],*args,**kwargs)]

if __name__ == '__main__':
    fig = plt.figure()
    ax  = fig.add_subplot(111)    
    ax.set_ylim((0,1.25))
    ax.plot([1,2],[1,1],'r-')
    offsetPlot(ax,[1.5,3],[1,1],color='b',linestyle='-') #'b-' is also a valid argument
    plt.show()
于 2012-10-31T11:52:14.607 に答える