python - Python:围绕圆圈放置的文本的旋转值
问题描述
这是代码片段:
fig, ax = plt.subplots(figsize=(30, 20))
ax.axis('equal')
ax.set(xlim=(-10, 10), ylim=(-10, 10))
circle = plt.Circle((0, 0), 3.1, fc='cyan')
ax.add_patch(circle)
def kex(N):
alpha=2*np.pi/N
alphas = alpha*np.arange(N)
coordX = np.cos(alphas)
coordY = np.sin(alphas)
return np.c_[coordX, coordY, alphas]
data = 'P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13 P14'.split(' ')
radius = 3.3
points = kex(len(data))
for i in range(0, len(data)):
a = points[i,2]
x,y = (radius*np.sin(a), radius*np.cos(a))
a = a - 0.5*np.pi
if points[i, 1] < 0:
a = a - np.pi
ax.text(x, y, data[i], rotation=np.rad2deg(a), ha="center", va="center", fontsize=15)
ax.axis("off")
plt.show()
我想将文本围绕一个圆圈放置,但似乎找不到正确的旋转值。一些代码取自这里我已经调整了代码中的一些位,但似乎没有找到正确的旋转值。有人可以帮忙吗?
编辑01:
我想要从这里截取的类似截图。
解决方案
您没有确切地说出您的预期输出应该是什么。如果每个文本标签的底部与圆的切线对齐,那么您就快到了;你可以这样做:
for i in range(0, len(data)):
a = points[i,2]
x,y = (radius*np.sin(a), radius*np.cos(a))
ax.text(x, y, data[i], rotation=-np.rad2deg(a), ha="center", va="center", fontsize=15)
即删除a
计算x
和之后修改的代码行y
,然后使用减去角度a
来设置文本的旋转。
要回答已编辑的问题,您可以简单地使用:
if y < 0:
a += np.pi
推荐阅读
- android - 不确定如何处理插入方法的返回类型
- java - 滚动文件没有在第二天创建,前一天的文件正在用新日志写入
- janusgraph - 运行 gremlin 脚本时数据损坏异常
- c# - EF-core OnModelCreating 方法中的依赖注入
- wxwidgets - 在 wxSearchCtrl 上按 Enter 键未按预期触发
- indexeddb - dexie.js:第一次嵌套查询很慢
- mysql - MYSQL的USING子句
- javascript - 在本机反应中将批量照片上传到 Firebase 存储
- c++ - 在 BST heap-use-after-free 错误中删除节点
- angular - 将自定义控件添加到角度选择下拉控件