2017-05-19 24 views
-1

私はmatplotlibを使ってデータポイントをプロットしています。matpotlibを使用してプロット領域の外にデータポイントをプロットする方法はありますか?

基本的には、離散点をプロットする必要があります。それらの多くは境界に置かれています。しかし、添付の図に示すように、図の境界上のデータポイントは、完全な円ではなく、半円として表示されます。

誰もが完全な円として境界上にそれらの点をプロットする方法を提案できますか?

def PlotGrid(grid_point, file_name): 
    plt.figure() 
    dims = np.shape(grid_point) 
    for i in range(0, dims[1]): 
    for j in range(0, dims[2]): 
     plt.plot(grid_point[0, i, j], grid_point[1, i, j], 'ro', markersize=15) 

ありがとうございます!

enter image description here

答えて

5

Falseplt.plot kwarg clip_onを設定し、ポイントが軸の外に表示されます。 docsから

plt.plot(grid_point[0, i, j], grid_point[1, i, j], 'ro', markersize=15, clip_on=False) 

Artist.set_clip_on(b)

アーティストがクリッピングを使用するかどうかを設定します。

偽のアーティストが軸の外側に表示され、予期しない結果につながる可能性がある場合。

受諾:[True |

]偽ここで最小の例は:例えば

import matplotlib.pyplot as plt 

fig, ax = plt.subplots(1) 

ax.set_xlim(0, 1) 
ax.set_ylim(0, 1) 

ax.plot(0, 0, 'ro', markersize=30, clip_on=True, label='clip_on=True') 
ax.plot(1, 1, 'bo', markersize=30, clip_on=False, label='clip_on=False') 

ax.legend()  

plt.show() 

enter image description here

3

アーティスト軸がそれらをクリップすることを可能にしないことにより、軸外で示すことができます、 plt.plot(..., clip_on=False)

import matplotlib.pyplot as plt 
import numpy as np 
plt.rcParams["figure.figsize"] = (5,4) 

plt.figure() 
X,Y = np.meshgrid(range(4),range(4)) 
for i in range(0, 4): 
    for j in range(0, 4): 
     plt.plot(X[i,j], Y[i,j], 'ro', markersize=30, clip_on=False) 
plt.margins(0.0)   
plt.show() 

enter image description here

しかし、アーティストが実際の軸の内側に完全に住んでいるような、軸の範囲を拡張した方が良いかもしれません。これはplt.margins()を使用して行うことができます。

import matplotlib.pyplot as plt 
import numpy as np 

plt.figure() 
X,Y = np.meshgrid(range(4),range(4)) 
for i in range(0, 4): 
    for j in range(0, 4): 
     plt.plot(X[i,j], Y[i,j], 'ro', markersize=30) 
plt.margins(0.1) ## add 10% margin on all sides  
plt.show() 

enter image description here

関連する問題