如何绘制带有彩色条的直方图,其中的颜色应与x轴上的值一致?

阿比吉特·拉娜(Abhijit Rana)

我已经编写了一个代码,可以给我一个直方图和一个条形图。我的代码看起来像这样:

from math import pi, sin
import numpy as np
import matplotlib.pyplot as plt

plt.style.use('seaborn-whitegrid')

with open('output.txt', 'r') as f:
    lines = f.readlines()
    x = [float(line.split()[12]) for line in lines]

b=[]
a=np.histogram(x,bins=[90,92.5,95,97.5,100,102.5,105,107.5,110,112.5,115,117.5,120,122.5,125,127.5,130,132.5,135,137.5,140,142.5,145,147.5,150,152.5,155,157.5,160,162.5,165,167.5,170,172.5,175,177.5,180])

for i in range(len(a[0])):
    a[0][i]=a[0][i]/sin((91.25 + 2.5*i)*pi/180)
    b.append((91.25 + 2.5*i))

plt.bar(b,a[0],2.5,edgecolor='black')
plt.xlabel('angle($\Theta$)($\circ$)')
plt.ylabel('corrected Frequency')
plt.title('corrected angle distribution')
plt.savefig('Cone_corrected_angle_distribution.jpg', dpi=600)
plt.show()

plt.hist(x,bins=[90,92.5,95,97.5,100,102.5,105,107.5,110,112.5,115,117.5,120,122.5,125,127.5,130,132.5,135,137.5,140,142.5,145,147.5,150,152.5,155,157.5,160,162.5,165,167.5,170,172.5,175,177.5,180],edgecolor='black')
plt.xlabel('angle($\Theta$)($\circ$)')
plt.ylabel('Frequency')
plt.title('Angle distribution')
plt.savefig('angle_distribution.jpg', dpi=600)
plt.show()

现在,我想对图形做两个修改:

  1. 我想对直方图的条进行着色,以使每个条具有唯一的颜色。条的颜色应根据x轴的值确定。并且在x轴下方还应该有一个颜色栏,以供参考。

  2. 我想绘制核分布函数和直方图。我尝试过的方法给了我一条归一化的曲线。但是我想沿着直方图绘制它。

这将是一个很大的帮助!

约翰·C

条形图的条形可以通过color=参数进行着色,该参数可以是一种特定的颜色,也可以是一种颜色的数组。直方图不允许使用颜色数组,但是返回的矩形可以很容易地循环着色。

kde是籽粒密度估计,并且优选地由原始x值计算。归一化后的表面积为1,因此只需将其乘以直方图的面积(即所有高度的总和乘以钢筋宽度)即可得到相似的比例。

下面的代码首先创建一些随机数据。原始代码中的不同数组是通过numpy尽可能多地计算出来的(这是更快的方法,通常更具可读性,并且更容易通过仅在一个位置更改值来创建变化)。

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import gaussian_kde

x = np.random.normal(135, 15, 1000)
bin_width = 2.5
bins_bounds = np.arange(90, 180.01, bin_width)
bin_values, _ = np.histogram(x, bins=bins_bounds)
bin_centers = (bins_bounds[:-1] + bins_bounds[1:]) / 2
bin_values = bin_values / np.sin(bin_centers * np.pi / 180)

plt.style.use('seaborn-whitegrid')
fig, ax = plt.subplots(ncols=2, figsize=(10, 4))
cmap = plt.cm.get_cmap('inferno')
norm = plt.Normalize(vmin=90, vmax=180)
colors = cmap(norm(bin_centers))
ax[0].bar(bin_centers, bin_values, bin_width, color=colors, edgecolor='black')
ax[0].set_xlabel('angle($\Theta$)($\circ$)')
ax[0].set_ylabel('corrected Frequency')
ax[0].set_title('corrected angle distribution')

sm = plt.cm.ScalarMappable(cmap=cmap, norm=norm)
sm.set_array([])
fig.colorbar(sm, ax=ax[0], orientation='horizontal')

_, _, bars = ax[1].hist(x, bins=bins_bounds, edgecolor='black')
for bar, color in zip(bars, colors):
    bar.set_facecolor(color)
xs = np.linspace(90, 180, 200)
kde = gaussian_kde(x)
ax[1]. plot(xs, kde(xs) * len(x) * bin_width, color='dodgerblue', lw=2)
ax[1].set_xlabel('angle($\Theta$)($\circ$)')
ax[1].set_ylabel('Frequency')
ax[1].set_title('Angle distribution')
fig.colorbar(sm, ax=ax[1], orientation='horizontal')
plt.tight_layout()
plt.show()

样例

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

HighCharts:如何在多个轴上绘制一条直线,例如带有固定X轴且值不同的plotLines

来自分类Dev

如何为只有1列和多行的数据框创建直方图(行值应在x轴上绘制,列值应在y轴上绘制)

来自分类Dev

matplotlib 在 x 轴上带有字符串的直方图

来自分类Dev

如何使用 matplotlib 直方图绘制其中 x 轴是每日时间戳范围

来自分类Dev

X轴上带有日期时间的HighCharts散点图无法正确绘制值

来自分类Dev

在x轴上绘制带有标签的图

来自分类Dev

Matplotlib:如何在X轴上绘制带有分类数据的线?

来自分类Dev

如何在X轴上绘制带有时间的分类计数图?

来自分类Dev

Matplotlib:如何绘制一个x值的一维数组,其中y轴与热图相对应?

来自分类Dev

如何在x轴上绘制带有2个变量并在y轴上计数的图形?

来自分类Dev

在python中使用不同的时间索引在同一x轴上绘制多个直方图

来自分类Dev

Matplotlib:如何添加另一个X轴,其中刻度线对应于带有自定义标签的图形上的点

来自分类Dev

如何在R的X轴上绘制多个变量,并在Y轴上绘制其值?

来自分类Dev

如何在R中绘制直方图并具有精确的轴值。

来自分类Dev

如何在带有日期的x轴上看到月份和年份?和y轴上的值?与Chartkick

来自分类Dev

如何绘制直方图的两个水平x轴标签?

来自分类Dev

在excel中的一致时间轴上绘制随机时间

来自分类Dev

如何在画布上绘制带有多行粗体/彩色单词的多行文本?

来自分类Dev

R ggplot-将所有离散x值显示在直方图中的轴上

来自分类Dev

在增加的 x 轴上绘制值

来自分类Dev

Pyplot-当一个轴的列表长度不一致时,如何在同一图形上绘制多条线?

来自分类Dev

带有字符串 x 轴的直方图

来自分类Dev

如何在绘图直方图 x 轴上显示零频率值?

来自分类Dev

如何在X轴上创建带有日期的bwplot

来自分类Dev

如何告诉Excel在x轴上绘制一列,在垂直轴上绘制另一列?

来自分类Dev

如何在JavaFX ScatterChart中从点到X轴绘制一条线?

来自分类Dev

X轴上的字符串值的堆叠直方图失败

来自分类Dev

如何在python中绘制以y轴为“与每个x bin对应的y值的总和”和x轴为x的n个bin的直方图?

来自分类Dev

R中的酒窝dPlot颜色x轴条值

Related 相关文章

  1. 1

    HighCharts:如何在多个轴上绘制一条直线,例如带有固定X轴且值不同的plotLines

  2. 2

    如何为只有1列和多行的数据框创建直方图(行值应在x轴上绘制,列值应在y轴上绘制)

  3. 3

    matplotlib 在 x 轴上带有字符串的直方图

  4. 4

    如何使用 matplotlib 直方图绘制其中 x 轴是每日时间戳范围

  5. 5

    X轴上带有日期时间的HighCharts散点图无法正确绘制值

  6. 6

    在x轴上绘制带有标签的图

  7. 7

    Matplotlib:如何在X轴上绘制带有分类数据的线?

  8. 8

    如何在X轴上绘制带有时间的分类计数图?

  9. 9

    Matplotlib:如何绘制一个x值的一维数组,其中y轴与热图相对应?

  10. 10

    如何在x轴上绘制带有2个变量并在y轴上计数的图形?

  11. 11

    在python中使用不同的时间索引在同一x轴上绘制多个直方图

  12. 12

    Matplotlib:如何添加另一个X轴,其中刻度线对应于带有自定义标签的图形上的点

  13. 13

    如何在R的X轴上绘制多个变量,并在Y轴上绘制其值?

  14. 14

    如何在R中绘制直方图并具有精确的轴值。

  15. 15

    如何在带有日期的x轴上看到月份和年份?和y轴上的值?与Chartkick

  16. 16

    如何绘制直方图的两个水平x轴标签?

  17. 17

    在excel中的一致时间轴上绘制随机时间

  18. 18

    如何在画布上绘制带有多行粗体/彩色单词的多行文本?

  19. 19

    R ggplot-将所有离散x值显示在直方图中的轴上

  20. 20

    在增加的 x 轴上绘制值

  21. 21

    Pyplot-当一个轴的列表长度不一致时,如何在同一图形上绘制多条线?

  22. 22

    带有字符串 x 轴的直方图

  23. 23

    如何在绘图直方图 x 轴上显示零频率值?

  24. 24

    如何在X轴上创建带有日期的bwplot

  25. 25

    如何告诉Excel在x轴上绘制一列,在垂直轴上绘制另一列?

  26. 26

    如何在JavaFX ScatterChart中从点到X轴绘制一条线?

  27. 27

    X轴上的字符串值的堆叠直方图失败

  28. 28

    如何在python中绘制以y轴为“与每个x bin对应的y值的总和”和x轴为x的n个bin的直方图?

  29. 29

    R中的酒窝dPlot颜色x轴条值

热门标签

归档