【发布时间】:2019-05-21 02:29:13
【问题描述】:
我试图达到的最终结果是在我的地块周围有一个“更厚”的黑色边框,沿着 xmin、xmax、ymin 和 ymax。我尝试了几种不同的方法(例如仅在绘图上绘制一个矩形,见下文),但由于某些原因,我无法达到预期的结果。
因为我不能只使用刺(我将其中的 2 个设置为始终为 0),所以我需要添加一些其他线条或矩形来创建所需的边框。
默认情况下,第一个和最后一个刻度标签悬在轴上。我通过改变水平或垂直对齐方式“克服”了这一点,但他们仍然可以使用更多的填充。我知道这是可能的,但需要转换并且有点笨重。
现在我想删除两个轴上的第一个和最后一个刻度线。这是因为考虑到矩形的绘制方式,它总是在绘图区域内,但第一个和最后一个刻度线总是在它之外,不管矩形有多厚。使矩形变粗只会使其与第一个和最后一个刻度标签重叠更多,实际的刻度线仍然在矩形之外。
欢迎任何其他关于如何实现这种边界同时始终将轴保持在 0、0 的建议。这就是总体期望的结果。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
from matplotlib.patches import Rectangle
X = np.random.randint(low=-9, high=9, size=10)
Y = np.random.randint(low=-9, high=9, size=10)
fig, ax = plt.subplots()
ax.axis([-10, 10, -10, 10])
ax.spines['left'].set_position('zero')
ax.spines['bottom'].set_position('zero')
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
plt.setp(ax.xaxis.get_majorticklabels()[0], ha='left')
plt.setp(ax.xaxis.get_majorticklabels()[-1], ha='right')
plt.setp(ax.yaxis.get_majorticklabels()[0], va='bottom')
plt.setp(ax.yaxis.get_majorticklabels()[-1], va='top')
patPlotBorder = ax.add_artist(Rectangle((-10, -10), 20, 20, fill=False, color='k', linewidth=2))
ax.grid(True)
fig.set_tight_layout(True)
ax.scatter(X, Y, c="b", marker="o", s=40)
plt.show()
【问题讨论】:
标签: python python-3.x matplotlib