我想将 Line2D 的虚线设置为坐标而不是点。我怎样才能做到这一点?
我想尝试将破折号设置为我的线段长度的 1/3。我尝试了类似的方法,但结果不正确:
fig, ax = plt.subplots(figsize=(3, 3), dpi=300, layout="constrained")
point_1 = (0, 0)
point_2 = (1, 1)
data_coords = ax.transData.transform(point_2) - ax.transData.transform(point_1)
length = np.linalg.norm(data_coords)
value = 1/3 * length * 72 / fig.dpi
ax.plot((point_1[0], point_2[0]), (point_1[1], point_2[1]), dashes=[value, value])
我希望这里有一个短划线、一个停止点和一个长度相等的短划线!我做错了什么?
将
value
除以轴坐标中的对角线长度,即本例中的 np.sqrt(2)
,例如,
fig, ax = plt.subplots(figsize=(3, 3), dpi=300, layout="constrained")
point_1 = (0, 0)
point_2 = (1, 1)
data_coords = ax.transData.transform(point_2) - ax.transData.transform(point_1)
length = np.linalg.norm(data_coords)
value = (1/3 * length * 72 / fig.dpi) / np.sqrt(2)
ax.plot((point_1[0], point_2[0]), (point_1[1], point_2[1]), dashes=[value, value])
你会得到你所期望的。