我正在尝试在Python中绘制一个2D矩形板。该板将被分成可变数量的部分,每个部分都将填充有一种指定角度的斜线图案。以下是一个具有5个部分和其部分阴影方向数组(以度为单位)为[0, 45, 0, -45, 0]的矩形示例。它需要能够显示任何方向,而不仅仅是通常的90、45、0,例如33、74.5等。
任何想法如何实现这一点?实质上,我只想在每个部分中显示方向,非常感谢您提供任何其他表达相同结果的方法,例如单行而不是阴影。
编辑(问题回答后): Greg提供的编辑脚本如下所示。
任何想法如何实现这一点?实质上,我只想在每个部分中显示方向,非常感谢您提供任何其他表达相同结果的方法,例如单行而不是阴影。
编辑(问题回答后): Greg提供的编辑脚本如下所示。
from numpy import cos, sin
import numpy as np
import matplotlib.pyplot as plt
angles = [0,10,20,30,40,50]
numberOfSections = len(angles)
def plot_hatches(ax, angle, offset=.1):
angle_radians = np.radians(angle)
x = np.linspace(-1, 1, 10)
for c in np.arange(-2, 2, offset):
yprime = cos(angle_radians) * c - sin(angle_radians) * x
xprime = sin(angle_radians) * c + cos(angle_radians) * x
ax.plot(xprime, yprime, color="b", linewidth=2)
ax.set_ylim(0, 1)
ax.set_xlim(0, 1)
return ax
fig, axes = plt.subplots(nrows=1, ncols=numberOfSections, figsize=(16,(16/numberOfSections)), sharex=True, sharey=True)
for i in range(len(axes.flat)):
plot_hatches(axes.flat[i], angles[i])
fig.subplots_adjust(hspace=0, wspace=0)
plt.show()
生成如下图所示的图形。 但是经过检查,角度并不与输入的角度相匹配。
plot_hatches
函数,它接受两个参数:第一个是要绘制的轴,第二个是角度。要将其变成 1x4 的格式,需要更改plt.subplots
中的行数和列数(这是创建轴的地方)。然后运行 for 循环,但是不要随机生成角度,而是从列表中插入你的角度。建议将这个脚本保存下来,并进行修改。如果遇到问题,请告诉我。 - Greg