matplotlib 极坐标图中的粗体注解和勾号标签

vcudknz3  于 7个月前  发布在  其他
关注(0)|答案(1)|浏览(52)

我在matplotlib中绘制极散点图,每个数据点附近都有注解。
我需要将注解设为粗体(因为它们重叠了),同时将r轴标记设为粗体(并将轴标记设为垂直线右侧)。
我的代码:

import numpy as np
import matplotlib.pyplot as plt

month = ['Feb-16','Mar-16', 'Apr-16', 'May-16', 'Jun-16', 'Jul-16',
        'Aug-16', 'Sep-16', 'Nov-16', 'Dec-16', 'Jan-17']
phi = np.array([3.272, 3.185, 3.159, 2.13, 2.879, 2.617, 2.705, 
                2.53, 3.228, 3.054, np.pi]) 
r = np.array([1006.225, 1006.083, 1007.189, 1007.0614, 1002.909, 1001.053, 
              1001.953, 1006.609, 1011.403, 1013.885,1013.391])



fig = plt.figure()
ax = fig.add_subplot(111, projection='polar')
c = ax.scatter(phi, r, alpha=0.75)
ax.set_ylim(1000,1014)
ax.set_xlim(np.pi/2,(7/6.)*np.pi)
ax.yaxis.set_tick_params(labelsize=12)
for i in range(len(r)): 
    ax.annotate(month[i],
            xy=(phi[i], r[i]))
lines, labels = ax.set_thetagrids( range(90,240,30),
                           ('12:00', '11:00', '10:00','9:00', '8:00'),
                           fontweight='bold')

plt.show()

字符串
其产生:


的数据

zujrkrfu

zujrkrfu1#

看起来目标是让 * 一切 * 都变得大胆。这很容易通过rcParams实现:

plt.rcParams["font.weight"] = "bold"

字符串


的数据
要单独控制注解的字体,可以使用fontweight参数

ax.annotate(..., fontweight="bold")


要控制y ticklabels的字体,您可以在以前执行以下操作:

plt.setp(ax.get_yticklabels(), fontweight="bold")


但是这在matplotlib 2.2中已经不起作用了。我目前不知道还有什么替代方案(或者是否有可能)。
如果你有一个完整的圆形图(即如果你在这里省略了xlim),你也可以像这样使用set_rgrids

ax.set_rgrids(range(1000,1014,2),range(1000,1014,2), fontweight="bold")


但这似乎被忽略了楔形图。

相关问题