我使用matplotlib绘制数据点。
基本上,我想绘制离散点。他们中的许多人被置于边界之上。但是,如附图所示,图形边界上的数据点仅显示为半圆而不是整圆。
有人可以建议如何将边界上的那些点绘制成完整的圆圈吗?
myBool == false
谢谢!
答案 0 :(得分:5)
将plt.plot
kwarg clip_on
设置为False
,这些点将显示在轴外。
plt.plot(grid_point[0, i, j], grid_point[1, i, j], 'ro', markersize=15, clip_on=False)
来自docs:
Artist.set_clip_on(b)
设置艺术家是否使用剪辑。
当假的艺术家在轴外可见时会导致意想不到的结果。
ACCEPTS:[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()
答案 1 :(得分: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()
然而,扩展轴范围可能更好,这样艺术家实际上完全生活在轴内。这可以使用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()