почему моя гистограмма на полярной оси не начинает рисовать из центра круга - PullRequest
0 голосов
/ 13 июня 2019

Я хочу нарисовать столбчатую диаграмму с радиальной осью, начинающейся с r = 0,9 в центре, используя matplotlib.axes.Axes.bar, вот пример: https://matplotlib.org/gallery/pie_and_polar_charts/polar_bar.html#sphx-glr-gallery-pie-and-polar-charts-polar-bar-py Я внес некоторые изменения в примерчтобы соответствовать моим данным, вот мой код

import numpy as np
import matplotlib.pyplot as plt

N = 15
theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False)
r = np.array(
    [0.9928, 0.9854, 0.9829, 0.9794, 0.9727, 0.9698, 0.9657, 0.9641, 0.9651, 0.9482, 0.9557, 0.9404, 0.9360, 0.9270,
     0.9253])
width = np.array([0.4] * N)
label = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "l", "m", "n", "o", "p"]

ax = plt.subplot(111, projection='polar')

ax.set_rlim(0.9, 1)
ax.set_rticks(np.arange(0.94, 1, 0.02))
ax.set_thetagrids(theta * 180 / np.pi)
ax.set_rlabel_position(-15)

ax.bar(x=theta, height=r, width=width, bottom=0.0, alpha=0.5, tick_label=label)

plt.show()

Но я обнаружил, что центр круга очень аккуратный, кажется, что полоса не начинается с r = 0,9 центра круга.

Сюжет выглядит следующим образом:

Стрелка является центром круга.

Как решить эту проблему?

1 Ответ

1 голос
/ 13 июня 2019

Вы хотите начать свой сюжет с r = 0,9.Для этого также пусть ваши бары начинаются с r = 0,9 вместо r = 0.

import numpy as np
import matplotlib.pyplot as plt

N = 15
theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False)
r = np.array(
    [0.9928, 0.9854, 0.9829, 0.9794, 0.9727, 0.9698, 0.9657, 0.9641, 0.9651, 0.9482, 0.9557, 0.9404, 0.9360, 0.9270,
     0.9253])
width = np.array([0.4] * N)
label = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "l", "m", "n", "o", "p"]

ax = plt.subplot(111, projection='polar')

ax.set_rlim(0.9, 1)
ax.set_rticks(np.arange(0.94, 1, 0.02))
ax.set_thetagrids(theta * 180 / np.pi)
ax.set_rlabel_position(-15)

ax.bar(x=theta, height=r-.9, width=width, bottom=0.9, alpha=0.5, tick_label=label)

plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...