我需要使用与角度相对应的颜色为圆形直方图上色。
我在matplotlib库中找到了一个示例,该示例以我需要的方式为极谱散点图着色: https://matplotlib.org/examples/pie_and_polar_charts/polar_scatter_demo.html
但这是一个散点图,我需要一个圆形直方图,并且我使用了对此问题的回答中的代码: Circular Histogram for Python
我希望能够进行更改,以使条形具有第一个图像的颜色。但是ax.bar不像散点图那样采用字符串颜色,返回错误。
这是圆形直方图的代码:
customer_group
编辑:在图的最后部分用半径代替theta会更改条形的颜色,但不会产生颜色在整个圆范围内连续变化的配色方案。我尝试按照评论中的建议将度数和弧度归一化。
import numpy as np
import matplotlib.pyplot as plt
N = 80
bottom = 8
max_height = 4
theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False)
radii = max_height*np.random.rand(N)
width = (2*np.pi) / N
ax = plt.subplot(111, polar=True)
bars = ax.bar(theta, radii, width=width, bottom=bottom)
# Use custom colors and opacity
for r, bar in zip(radii, bars):
bar.set_facecolor(plt.cm.jet(r / 10.))
bar.set_alpha(0.8)
plt.show()
和
bar.set_facecolor(math.degrees(r)/360))
两者都会产生错误的解决方案。
答案 0 :(得分:3)
the example似乎需要大修。可以简化如下,其中从问题中请求的两个更改是:
hsv
)。theta
)而不是半径(radii
)编码为彩色。不需要循环。
import numpy as np
import matplotlib.pyplot as plt
# Fixing random state for reproducibility
np.random.seed(19680801)
# Compute pie slices
N = 20
theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False)
radii = 10 * np.random.rand(N)
width = 2 * np.pi / N
colors = plt.cm.hsv(theta/2/np.pi)
ax = plt.subplot(111, projection='polar')
bars = ax.bar(theta, radii, width=width, bottom=4, color=colors)
plt.show()
答案 1 :(得分:0)