如何在坐标中表达破折号

问题描述 投票:0回答:1

我想将 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])

我希望这里有一个短划线、一个停止点和一个长度相等的短划线!我做错了什么?

python matplotlib
1个回答
0
投票

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])

你会得到你所期望的。

© www.soinside.com 2019 - 2024. All rights reserved.