Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 极坐标图-以粗体显示一条网格线_Python_Matplotlib_Polar Coordinates_Gridlines - Fatal编程技术网

Python 极坐标图-以粗体显示一条网格线

Python 极坐标图-以粗体显示一条网格线,python,matplotlib,polar-coordinates,gridlines,Python,Matplotlib,Polar Coordinates,Gridlines,我正试图利用极坐标投影来制作雷达图。我想知道如何仅将一条网格线用粗体表示(而其他网格线应保持标准) 对于我的具体情况,我想突出显示与ytick“0”关联的网格线 这只是一个小把戏,但我想你可以画一个圆,然后把它的线宽和颜色改成任何适合你的粗体字。 例如: import matplotlib.pyplot as plt import numpy as np Yline = 0 Npoints = 300 angles = np.linspace(0,360,Npoints)*np.pi/180

我正试图利用极坐标投影来制作雷达图。我想知道如何仅将一条网格线用粗体表示(而其他网格线应保持标准)

对于我的具体情况,我想突出显示与ytick“0”关联的网格线


这只是一个小把戏,但我想你可以画一个圆,然后把它的
线宽
颜色
改成任何适合你的粗体字。 例如:

import matplotlib.pyplot as plt
import numpy as np

Yline = 0
Npoints = 300

angles = np.linspace(0,360,Npoints)*np.pi/180
line = 0*angles + Yline

ax = plt.subplot(111, projection='polar')
plt.plot(angles, line, color = 'k', linewidth = 3)
plt.ylim([-1,1])
plt.grid(True)
plt.show()
在这段代码中,我使用
plt绘制了一条直线。在两个向量
角度
直线
的任意点之间绘制
。前者实际上是
0
2*np.pi
之间的所有角度。后者是常数,等于要绘制该线的“高度”
Yline


我建议您在查看
np.linspace()
文档的同时尽量减少和增加
Npoints
,以了解圆的圆度问题。

绘图的网格线是Line2D对象。因此,你不能让它大胆。您可以做的(部分如另一个答案中所示)是增加线宽并更改颜色,但您可以对指定的网格线执行此操作,而不是绘制一条新线

首先需要找到要更改的y记号标签的索引:

y_tick_labels = [-100,-10,0,10]
ind = y_tick_labels.index(0) # find index of value 0
然后可以使用
gridlines=ax.yaxis.get\u gridlines()
获取网格线列表。然后使用之前在此列表中找到的索引来更改正确网格线的属性

以中的示例为基础,完整示例如下所示:

r = np.arange(0, 2, 0.01)
theta = 2 * np.pi * r

ax = plt.subplot(111, projection='polar')
ax.set_rmax(2)
ax.set_rticks([0.5, 1, 1.5, 2])  # less radial ticks
ax.set_rlabel_position(-22.5)  # get radial labels away from plotted line
ax.grid(True)

y_tick_labels = [-100, -10, 0, 10]
ax.set_yticklabels(y_tick_labels)
ind = y_tick_labels.index(0)  # find index of value 0

gridlines = ax.yaxis.get_gridlines()
gridlines[ind].set_color("k")
gridlines[ind].set_linewidth(2.5)

plt.show()
其中:


谢谢您的建议。我添加了代码的plt.plot行,它确实在原始绘图上绘制了一个圆。然而,我不明白如何移动这个圆(如果我想,现在它被绘制在y的0坐标上,这很好),也不明白如何给这个圆带来更好的分辨率(它不像原始绘图中的其他圆那样完美地呈圆形…),这是一个重大的进步,谢谢:)我会根据你们的问题修改我的答案。
r = np.arange(0, 2, 0.01)
theta = 2 * np.pi * r

ax = plt.subplot(111, projection='polar')
ax.set_rmax(2)
ax.set_rticks([0.5, 1, 1.5, 2])  # less radial ticks
ax.set_rlabel_position(-22.5)  # get radial labels away from plotted line
ax.grid(True)

y_tick_labels = [-100, -10, 0, 10]
ax.set_yticklabels(y_tick_labels)
ind = y_tick_labels.index(0)  # find index of value 0

gridlines = ax.yaxis.get_gridlines()
gridlines[ind].set_color("k")
gridlines[ind].set_linewidth(2.5)

plt.show()