gpt4 book ai didi

python - 在 python 中绘制具有不同角度的填充矩形

转载 作者:太空宇宙 更新时间:2023-11-03 11:05:21 25 4
gpt4 key购买 nike

我正在尝试用 python 绘制一个二维矩形板。该板 block 将被分成数量可变的部分,每个部分都将填充一个阴影图案。这个阴影图案将有一个指定的角度。下面显示了一个具有 5 个部分的矩形及其剖面线方向(以度为单位)为 [0, 45, 0, -45, 0] 的数组的示例。它需要能够显示任何方向,而不仅仅是通常的 90、45、0,即 33、74.5 等。

enter image description here

知道我该怎么做吗?本质上我只想展示每个部分的方向,任何其他表达相同结果的方法将不胜感激,例如单线而不是影线。

编辑(回答问题后):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()

生成如下所示的图形。 enter image description here但经检查,角度与输入角度不匹配。

最佳答案

我有一个基本的想法,但我怀疑您需要做更多的事情,具体取决于您希望结果的灵 active 。

from numpy import cos, sin
import numpy as np
import matplotlib.pyplot as plt

def plot_hatches(ax, angle, offset=.1):
angle_radians = np.radians(angle)
x = np.linspace(-2, 2, 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="k")
ax.set_ylim(0, 1)
ax.set_xlim(0, 1)
return ax


fig, axes = plt.subplots(nrows=4, ncols=4, figsize=(8,8), sharex=True, sharey=True)

for i in range(len(axes.flat)):
plot_hatches(axes.flat[i], np.random.uniform(0, 90))

fig.subplots_adjust(hspace=0, wspace=0)

这里有两个部分:首先是函数 plot_hatches,它在轴 ax 上的单位正方形上绘制影线。这是通过采用单行 x, y=c 并使用 rotation matrix 旋转它来完成的获取 xprimeyprime,它们是与 x 轴成一定角度且偏移量为 c 的线的坐标。迭代 c 的几个值覆盖单位正方形,可以通过使 offset 参数更小来使线条更密集。

其次,我们需要一种方法来绘制彼此相邻的轴。这是我使用 subplots 完成的。这将返回 fig, axes axes 是一个轴实例数组,因此我们遍历它们并将它们传递给函数以绘制影线并每次给它一个随机角度。

enter image description here

编辑我已将 plot_hatches 代码更改为逆时针旋转(在此编辑之前为顺时针旋转)。这现在将使用数组 [0, -45, 0, 45, 0] 生成问题中给出的图像: enter image description here

关于python - 在 python 中绘制具有不同角度的填充矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21018387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com