为了账号安全,请及时绑定邮箱和手机立即绑定

使用色调颜色为极坐标条形图着色而不会在 0 处不连续

使用色调颜色为极坐标条形图着色而不会在 0 处不连续

牧羊人nacy 2021-11-02 20:07:57
我需要使用与角度对应的颜色为圆形直方图着色。我在 matplotlib 库中找到了一个示例,它以我需要的方式为极坐标散点图着色:https : //matplotlib.org/examples/pie_and_polar_charts/polar_scatter_demo.html但这是一个散点图,我需要一个圆形直方图,我使用了这个问题的响应中的代码: Circular Histogram for Python我希望能够进行更改,以便条形图具有第一个图像中的颜色。但是 ax.bar 不像散点图那样采用字符串颜色,返回错误。这是圆形直方图的代码:import numpy as npimport matplotlib.pyplot as plt N = 80bottom = 8max_height = 4theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False)radii = max_height*np.random.rand(N)width = (2*np.pi) / Nax = plt.subplot(111, polar=True)bars = ax.bar(theta, radii, width=width, bottom=bottom)# Use custom colors and opacityfor r, bar in zip(radii, bars):    bar.set_facecolor(plt.cm.jet(r / 10.))    bar.set_alpha(0.8)plt.show()编辑:在绘图的最后一部分用半径替换 theta 会改变条形的颜色,但不会产生颜色在整个圆范围内连续变化的配色方案。我尝试按照评论中的建议将 theta 标准化为度数和弧度:bar.set_facecolor(math.degrees(r)/360))和bar.set_facecolor(plt.cm.jet(r/2*np.pi))两者都会产生错误的解决方案。
查看完整描述

2 回答

?
森栏

TA贡献1810条经验 获得超5个赞

看起来这个例子需要一些大修。可以简化如下,其中从问题中请求的两个更改是:


使用不同的颜色图(此处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()

//img1.sycdn.imooc.com//61812a360001292d04750430.jpg

查看完整回答
反对 回复 2021-11-02
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

我将弧度转换为度数并除以 360。要将弧度转换为度数,我使用math.degrees().


import math


# Use custom colors and opacity

for th, bar in zip(theta, bars):

    bar.set_facecolor(plt.cm.hsv(math.degrees(th)/360))

    bar.set_alpha(0.8)

编辑正如我在评论中提到的,您提供的示例使用hsv颜色映射而不是您使用的颜色映射jet。答案已更新。

//img1.sycdn.imooc.com//61812a430001bbe303750268.jpg

查看完整回答
反对 回复 2021-11-02
  • 2 回答
  • 0 关注
  • 247 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信