相关疑难解决方法(0)

Matplotlib,从三个不等长度的数组创建堆积直方图

我想创建一个堆叠直方图.如果我有一个由三个等长数据集组成的二维数组,这很简单.代码和图片如下:

import numpy as np
from matplotlib import pyplot as plt

# create 3 data sets with 1,000 samples
mu, sigma = 200, 25
x = mu + sigma*np.random.randn(1000,3)

#Stack the data
plt.figure()
n, bins, patches = plt.hist(x, 30, stacked=True, normed = True)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是,如果我尝试使用具有不同长度的三个数据集的类似代码,则结果是一个直方图覆盖另一个直方图.有什么办法可以用混合长度数据集进行叠加直方图吗?

##Continued from above
###Now as three separate arrays
x1 = mu + sigma*np.random.randn(990,1)
x2 = mu + sigma*np.random.randn(980,1)
x3 = mu + sigma*np.random.randn(1000,1)

#Stack the data
plt.figure()
plt.hist(x1, bins, stacked=True, normed = True)
plt.hist(x2, bins, …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

47
推荐指数
2
解决办法
3万
查看次数

matplotlib/pandas中是否有一个参数使直方图的Y轴为百分比?

我想通过让Y轴显示整个数据集大小中每列的百分比而不是绝对值来比较两个直方图.那可能吗?我正在使用Pandas和matplotlib.谢谢

python matplotlib pandas

45
推荐指数
6
解决办法
5万
查看次数

Matplotlib - 已经分箱数据的阶梯直方图

我正在尝试获取已经分箱数据的直方图.我一直在尝试使用bar()它,但我似乎无法弄清楚如何使它成为像这样的阶梯式直方图,而不是填充的直方图.

在此输入图像描述

python numpy matplotlib scipy

16
推荐指数
1
解决办法
7248
查看次数

Python:直方图,区域标准化为1以外的值

有没有办法告诉matplotlib"规范化"直方图,使其面积等于指定值(1除外)?

选项"normed = 0"in

n, bins, patches = plt.hist(x, 50, normed=0, histtype='stepfilled')
Run Code Online (Sandbox Code Playgroud)

只是把它带回频率分布.

python matplotlib histogram area

9
推荐指数
2
解决办法
2万
查看次数

matplotlib.pyplot.hist 错误的规范属性

我正在创建在数据框中组织并按天分组的数据直方图。有时可能会出现数据完全为空的情况。因此,当我使用该属性绘制直方图时normed = True,我期望有一个以 0 为中心且高度等于 1 的 bin。但是,我发现高度等于 bin 的数量。我怎样才能解决这个问题?我想用直方图来表示概率密度函数,所以最大值应该是1。

代码示例和输出:

plt.rcParams['figure.figsize'] = 10, 4
data = np.zeros((1000))
l = plt.hist(data,normed = True, bins = 100)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

编辑:我现在看到该属性normed已被弃用。但是,如果我尝试使用该属性density,则会收到错误AttributeError: Unknown property density

python plot matplotlib histogram

7
推荐指数
2
解决办法
4万
查看次数

如何在python中规范化直方图?

我试图绘制标准直方图,但是在y轴上得到1作为最大值,我得到不同的数字.

对于数组k =(1,4,3,1)

 import numpy as np

 def plotGraph():

    import matplotlib.pyplot as plt

    k=(1,4,3,1)

    plt.hist(k, normed=1)

    from numpy import *
    plt.xticks( arange(10) ) # 10 ticks on x axis

    plt.show()  

plotGraph()
Run Code Online (Sandbox Code Playgroud)

我得到这个直方图,看起来不像诺曼.

在此输入图像描述

对于不同的数组k =(3,3,3,3)

 import numpy as np

 def plotGraph():

    import matplotlib.pyplot as plt

    k=(3,3,3,3)

    plt.hist(k, normed=1)

    from numpy import *
    plt.xticks( arange(10) ) # 10 ticks on x axis

    plt.show()  

plotGraph()
Run Code Online (Sandbox Code Playgroud)

我得到这个直方图,最大y值是10.

在此输入图像描述

对于不同的k,即使normed = 1或normed = True,我也得到不同的y的最大值.

为什么规范化(如果有效)会根据数据发生变化,如何使y的最大值等于1?

更新:

我试图通过在matplotlib中绘制条形高度总和为1的直方图来实现CarstenKönig的答案并得到非常奇怪的结果:

import numpy as np

def …
Run Code Online (Sandbox Code Playgroud)

python matplotlib normalization

5
推荐指数
3
解决办法
5万
查看次数

Python:matplotlib - 概率质量函数作为直方图

我想在同一个图形上绘制直方图和线图.但是,要做到这一点,我需要将直方图作为概率质量函数,所以我希望在y轴上得到一个概率值.但是,我不知道该怎么做,因为使用该normed选项没有帮助.下面是我的源代码和使用过的数据的预览.我会非常感谢所有的建议.

data = [12565, 1342, 5913, 303, 3464, 4504, 5000, 840, 1247, 831, 2771, 4005, 1000, 1580, 7163, 866, 1732, 3361, 2599, 4006, 3583, 1222, 2676, 1401, 2598, 697, 4078, 5016, 1250, 7083, 3378, 600, 1221, 2511, 9244, 1732, 2295, 469, 4583, 1733, 1364, 2430, 540, 2599, 12254, 2500, 6056, 833, 1600, 5317, 8333, 2598, 950, 6086, 4000, 2840, 4851, 6150, 8917, 1108, 2234, 1383, 2174, 2376, 1729, 714, 3800, 1020, 3457, 1246, 7200, 4001, 1211, 1076, 1320, …
Run Code Online (Sandbox Code Playgroud)

python plot matplotlib histogram python-2.7

2
推荐指数
1
解决办法
4129
查看次数

标签 统计

matplotlib ×7

python ×7

histogram ×3

plot ×2

area ×1

normalization ×1

numpy ×1

pandas ×1

python-2.7 ×1

scipy ×1