在Matplotlib/Python中更改极坐标图的轴选项

2024-06-08 15:14:02 发布

您现在位置:Python中文网/ 问答频道 /正文

在Matplotlib中更改轴标签时出现问题。我想更改极坐标图中的径向轴选项。

基本上,我计算的是圆柱体的变形,它只不过是半径与原始(完美的圆形)圆柱体的偏差。有些变形值是负值,而有些是正的,这是由于拉伸和压缩力。我在寻找一种用柱坐标表示的方法,所以我认为用极坐标图是最好的选择。Excel给了我一个“雷达图”选项,它足够灵活,可以让我指定最小和最大径向轴值。我想用Matplotlib在Python上复制这个。

我在极坐标上绘制的Python脚本如下。

#!usr/bin/env python
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-180.0,190.0,10)
theta = (np.pi/180.0 )*x    # in radians

offset = 2.0

R1 = [-0.358,-0.483,-0.479,-0.346,-0.121,0.137,0.358,0.483,0.479,0.346,0.121,\
-0.137,-0.358,-0.483,-0.479,-0.346,-0.121,0.137,0.358,0.483,0.479,0.346,0.121,\
-0.137,-0.358,-0.483,-0.479,-0.346,-0.121,0.137,0.358,0.483,0.479,0.346,0.121,\
-0.137,-0.358]

fig1 = plt.figure()
ax1 = fig1.add_axes([0.1,0.1,0.8,0.8],polar=True)
ax1.set_rmax(1)
ax1.plot(theta,R1,lw=2.5)

我的情节如下:bad

但这不是我想展示的。我想改变我的径向轴,这样我就可以把数据显示为偏离某个参考值,比如-2。如何要求极坐标中的Matplotlib更改最小轴标签?我在Excel中很容易做到这一点。我选择最小径向值-2,以获得以下Excel雷达图:
excelplot

在Python上,我可以轻松地将输入数据偏移2。我的新数据集称为R2,如图所示:

#!usr/bin/env python
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-180.0,190.0,10)
theta = (np.pi/180.0 )*x    # in radians

offset = 2.0

R2 = [1.642,1.517,1.521,1.654,1.879,2.137,2.358,2.483,2.479,2.346,2.121,1.863,\
1.642,1.517,1.521,1.654,1.879,2.137,2.358,2.483,2.479,2.346,2.121,1.863,1.642,\
1.517,1.521,1.654,1.879,2.137,2.358,2.483,2.479,2.346,2.121,1.863,1.642]

fig2 = plt.figure()
ax2 = fig2.add_axes([0.1,0.1,0.8,0.8],polar=True)
ax2.plot(theta,R2,lw=2.5) 
ax2.set_rmax(1.5*offset)
plt.show()

图如下所示:good

一旦我得到这个,我可以手动添加轴标签和硬编码到我的脚本。但这是一个非常丑陋的方式。有没有什么方法可以让我直接得到一个相当于Excel雷达图的Matplotlib,并在不需要处理输入数据的情况下更改轴标签?


Tags: 数据importmatplotlibasnpplt标签excel
1条回答
网友
1楼 · 发布于 2024-06-08 15:14:02

您可以使用设置轴限制的常规方法:

#!usr/bin/env python
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-180.0,190.0,10)
theta = (np.pi/180.0 )*x    # in radians

offset = 2.0

R1 = [-0.358,-0.483,-0.479,-0.346,-0.121,0.137,0.358,0.483,0.479,0.346,0.121,\
-0.137,-0.358,-0.483,-0.479,-0.346,-0.121,0.137,0.358,0.483,0.479,0.346,0.121,\
-0.137,-0.358,-0.483,-0.479,-0.346,-0.121,0.137,0.358,0.483,0.479,0.346,0.121,\
-0.137,-0.358]

fig1 = plt.figure()
ax1 = fig1.add_axes([0.1,0.1,0.8,0.8],polar=True)
ax1.set_ylim(-2,2)
ax1.set_yticks(np.arange(-2,2,0.5))
ax1.plot(theta,R1,lw=2.5)

相关问题 更多 >