标签: histogram

使用从colormap中获取的颜色绘制直方图

我想绘制一个简单的一维直方图,其中条形应遵循给定色图的颜色编码.

这是一个MWE:

import numpy as n
import matplotlib.pyplot as plt

# Random gaussian data.
Ntotal = 1000
data = 0.05 * n.random.randn(Ntotal) + 0.5

# This is  the colormap I'd like to use.
cm = plt.cm.get_cmap('RdYlBu_r')

# Plot histogram.
n, bins, patches = plt.hist(data, 25, normed=1, color='green')

plt.show()
Run Code Online (Sandbox Code Playgroud)

输出这个:

在此输入图像描述

green我希望这些列不是用于整个直方图的颜色,而是遵循由定义的颜色映射cm和颜色值给出的颜色编码bins.根据所选择的色彩图,这意味着接近于零(不在高度但在位置上)的箱应该看起来更蓝并且更接近一个更红RdYlBu_r.

由于plt.histo没有cmap参数,我不知道如何告诉它使用中定义的色彩映射cm.

python matplotlib histogram

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

在Matplotlib中从预先计数的数据绘制直方图

我想使用Matplotlib在已经预先计数的数据上绘制直方图.例如,假设我有原始数据

data = [1, 2, 2, 3, 4, 5, 5, 5, 5, 6, 10]
Run Code Online (Sandbox Code Playgroud)

鉴于这些数据,我可以使用

pylab.hist(data, bins=[...])
Run Code Online (Sandbox Code Playgroud)

绘制直方图.

就我而言,数据已被预先计算并表示为字典:

counted_data = {1: 1, 2: 2, 3: 1, 4: 1, 5: 4, 6: 1, 10: 1}
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想将这个预先计数的数据传递给直方图函数,让我可以控制箱宽,绘图范围等,就好像我已经将原始数据传递给它一样.作为一种解决方法,我将我的计数扩展到原始数据:

data = list(chain.from_iterable(repeat(value, count)
            for (value, count) in counted_data.iteritems()))
Run Code Online (Sandbox Code Playgroud)

counted_data包含数百万个数据点的计数时,这是低效的.

是否有更简单的方法使用Matplotlib从我预先计算的数据中生成直方图?

或者,如果最简单的条形图是预先装箱的数据,是否有一种方便的方法可以将我的每件商品计数"汇总"为分箱数量?

python matplotlib histogram

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

将R ggplot中的直方图中的y轴归一化为按组比例

我的问题非常类似于将R ggplot中的直方图中的y轴标准化为比例,除了我有两组不同大小的数据,我希望每个比例相对于其组大小而不是总大小.

为了更清楚,假设我在数据框中有两组数据:

dataA<-rnorm(100,3,sd=2)
dataB<-rnorm(400,5,sd=3)
all<-data.frame(dataset=c(rep('A',length(dataA)),rep('B',length(dataB))),value=c(dataA,dataB))
Run Code Online (Sandbox Code Playgroud)

我可以将两个发行版一起绘制:

ggplot(all,aes(x=value,fill=dataset))+geom_histogram(alpha=0.5,position='identity',binwidth=0.5)
Run Code Online (Sandbox Code Playgroud)

而不是Y轴上的频率我可以有以下比例:

ggplot(all,aes(x=value,fill=dataset))+geom_histogram(aes(y=..count../sum(..count..)),alpha=0.5,position='identity',binwidth=0.5)
Run Code Online (Sandbox Code Playgroud)

但是这给出了相对于总数据大小的比例(这里是500分):是否有可能相对于每个组的大小?

我的目标是使得可以在视觉上比较A和B之间给定箱中的值的比例,而与它们各自的大小无关.也欢迎与我的原创不同的想法!

谢谢!

r histogram ggplot2

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

使用matplotlib中的dataframe.plot()函数编辑条的宽度

我使用以下方法制作堆积条形图:

DataFrame.plot(kind='bar',stacked=True)
Run Code Online (Sandbox Code Playgroud)

我想控制条的宽度,以便条形图像直方图一样相互连接.

我查看了文档,但无济于事 - 有什么建议吗?有可能这样做吗?

python matplotlib histogram bar-chart pandas

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

如何使用NumPy获得累积分布函数?

我想用NumPy创建一个CDF,我的代码是下一个:

histo = np.zeros(4096, dtype = np.int32)
for x in range(0, width):
   for y in range(0, height):
      histo[data[x][y]] += 1
      q = 0 
   cdf = list()
   for i in histo:
      q = q + i
      cdf.append(q)
Run Code Online (Sandbox Code Playgroud)

我正在走数组,但需要很长时间才能执行程序.有这个功能的内置功能,不是吗?

python numpy histogram

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

如何在R中生成具有累积频率和相对频率的频率表

我是R.的新手.我需要生成一个具有累积频率和相对频率的简单频率表(如书中).

所以我想从一些简单的数据生成

> x
[1] 17 17 17 17 17 17 17 17 16 16 16 16 16 18 18 18 10 12 17 17 17 17 17 17 17 17 16 16 16 16 16 18 18 18 10
[36] 12 15 19 20 22 20 19 19 19
Run Code Online (Sandbox Code Playgroud)

像这样的表:

            frequency  cumulative   relative
(9.99,11.7]    2            2       0.04545455
(11.7,13.4]    2            4       0.04545455
(13.4,15.1]    1            5       0.02272727
(15.1,16.9]   10           15       0.22727273
(16.9,18.6]   22           37       0.50000000
(18.6,20.3]    6           43       0.13636364
(20.3,22]      1 …
Run Code Online (Sandbox Code Playgroud)

r frequency histogram cumulative-frequency

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

从字典中绘制直方图

我创建了一个dictionary计算list每个键中一个键的出现次数,我现在想要绘制其内容的直方图.

这是我想要绘制的字典的内容:

{1: 27, 34: 1, 3: 72, 4: 62, 5: 33, 6: 36, 7: 20, 8: 12, 9: 9, 10: 6, 11: 5, 12: 8, 2: 74, 14: 4, 15: 3, 16: 1, 17: 1, 18: 1, 19: 1, 21: 1, 27: 2}
Run Code Online (Sandbox Code Playgroud)

到目前为止我写了这个:

import numpy as np
import matplotlib.pyplot as plt

pos = np.arange(len(myDictionary.keys()))
width = 1.0     # gives histogram aspect to the bar diagram

ax = plt.axes()
ax.set_xticks(pos + (width / 2))
ax.set_xticklabels(myDictionary.keys()) …
Run Code Online (Sandbox Code Playgroud)

python dictionary matplotlib histogram

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

Python的圆形直方图

我有周期性数据,并且它的分布最好围绕一个圆圈可视化.现在的问题是如何使用matplotlib进行这种可视化?如果没有,可以在Python中轻松完成吗?

我的代码将演示围绕圆圈分布的粗略近似值:

from matplotlib import pyplot as plt
import numpy as np

#generatin random data
a=np.random.uniform(low=0,high=2*np.pi,size=50)

#real circle
b=np.linspace(0,2*np.pi,1000)
a=sorted(a)
plt.plot(np.sin(a)*0.5,np.cos(a)*0.5)
plt.plot(np.sin(b),np.cos(b))
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在SX for Mathematica的问题中有几个例子: 在此输入图像描述 在此输入图像描述

python plot visualization matplotlib histogram

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

Matplotlib:绘制具有非透明边缘的透明直方图

我正在绘制直方图,我有三个数据集,我想要一起绘制,每个数据集都有不同的颜色和线型(虚线,点线等).我也给了一些透明度,以便看到重叠的条形图.

关键是我希望每个条的边缘不会像内部部分那样变得透明.这是一个例子:

import matplotlib.pyplot as plt
import numpy as np

x = np.random.random(20)
y =np.random.random(20)
z= np.random.random(20)

fig = plt.figure()
ax = fig.add_subplot(111)
ax.hist(x, bins=np.arange(0, 1, 0.1), ls='dashed', alpha = 0.5, lw=3, color= 'b')
ax.hist(y, bins=np.arange(0, 1, 0.1), ls='dotted', alpha = 0.5, lw=3, color= 'r')
ax.hist(z, bins=np.arange(0, 1, 0.1), alpha = 0.5, lw=3, color= 'k')
ax.set_xlim(-0.5, 1.5)
ax.set_ylim(0, 7)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python plot alpha matplotlib histogram

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

如何从Python中的字符串列表中创建直方图?

我有一个字符串列表:

a = ['a', 'a', 'a', 'a', 'b', 'b', 'c', 'c', 'c', 'd', 'e', 'e', 'e', 'e', 'e']
Run Code Online (Sandbox Code Playgroud)

我想制作一个直方图来显示字母的频率分布.我可以使用以下代码创建一个包含每个字母数的列表:

from itertools import groupby
b = [len(list(group)) for key, group in groupby(a)]
Run Code Online (Sandbox Code Playgroud)

如何制作直方图?我可能在列表中有一百万个这样的元素a.

python string histogram

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