标签: histogram

如何在Python直方图中使用对数bin

据我所知,直方图函数中的选项Log = True仅指y轴.

P.hist(d,bins=50,log=True,alpha=0.5,color='b',histtype='step')
Run Code Online (Sandbox Code Playgroud)

我需要垃圾箱在log10中等间隔.有什么东西能做到吗?

python numpy matplotlib histogram

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

具有对数标度和自定义中断的直方图

我正在尝试在R中生成直方图,y为对数标度.目前我这样做:

hist(mydata$V3, breaks=c(0,1,2,3,4,5,25))
Run Code Online (Sandbox Code Playgroud)

这给了我一个直方图,但是0到1之间的密度是如此之大(大约一百万个值的差异),你几乎无法看出任何其他的条形.

然后我尝试过:

mydata_hist <- hist(mydata$V3, breaks=c(0,1,2,3,4,5,25), plot=FALSE)
plot(rpd_hist$counts, log="xy", pch=20, col="blue")
Run Code Online (Sandbox Code Playgroud)

它给了我一个我想要的东西,但是底部显示了值1-6而不是0,1,2,3,4,5,25.它还将数据显示为点而不是条形.barplot工作,但后来我没有任何底轴.

logarithm r histogram

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

使用直方图的Matplotlib/Pandas错误

我有问题从熊猫系列对象制作直方图,我不明白为什么它不起作用.代码之前运行良好,但现在却没有.

这是我的一些代码(具体来说,我正在尝试制作直方图的pandas系列对象):

type(dfj2_MARKET1['VSPD2_perc'])
Run Code Online (Sandbox Code Playgroud)

输出结果: pandas.core.series.Series

这是我的绘图代码:

fig, axes = plt.subplots(1, 7, figsize=(30,4))
axes[0].hist(dfj2_MARKET1['VSPD1_perc'],alpha=0.9, color='blue')
axes[0].grid(True)
axes[0].set_title(MARKET1 + '  5-40 km / h')
Run Code Online (Sandbox Code Playgroud)

错误信息:

    AttributeError                            Traceback (most recent call last)
    <ipython-input-75-3810c361db30> in <module>()
      1 fig, axes = plt.subplots(1, 7, figsize=(30,4))
      2 
    ----> 3 axes[1].hist(dfj2_MARKET1['VSPD2_perc'],alpha=0.9, color='blue')
      4 axes[1].grid(True)
      5 axes[1].set_xlabel('Time spent [%]')

    C:\Python27\lib\site-packages\matplotlib\axes.pyc in hist(self, x, bins, range, normed,          weights, cumulative, bottom, histtype, align, orientation, rwidth, log, color, label,    stacked, **kwargs)
   8322             # this will automatically overwrite bins,
   8323             # so that …
Run Code Online (Sandbox Code Playgroud)

python matplotlib histogram pandas

68
推荐指数
1
解决办法
7万
查看次数

Matplotlib - 标记每个bin

我目前正在使用Matplotlib来创建直方图:

在此输入图像描述

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as pyplot
...
fig = pyplot.figure()
ax = fig.add_subplot(1,1,1,)
n, bins, patches = ax.hist(measurements, bins=50, range=(graph_minimum, graph_maximum), histtype='bar')

#ax.set_xticklabels([n], rotation='vertical')

for patch in patches:
    patch.set_facecolor('r')

pyplot.title('Spam and Ham')
pyplot.xlabel('Time (in seconds)')
pyplot.ylabel('Bits of Ham')
pyplot.savefig(output_filename)
Run Code Online (Sandbox Code Playgroud)

我想让x轴标签更有意义.

首先,这里的x轴刻度似乎限于五个刻度.无论我做什么,我似乎无法改变这一点 - 即使我添加更多xticklabels,它只使用前五个.我不确定Matplotlib如何计算这个,但我认为它是从范围/数据中自动计算的?

有没有什么办法可以提高x-tick标签的分辨率 - 甚至可以提高每个条形码/ bin 的分辨率

(理想情况下,我也希望以微秒/毫秒重新格式化秒数,但这是另一天的问题).

其次,我想要标记每个单独的条形图 - 包含该条形图中的实际数字,以及所有条形图总数的百分比.

最终输出可能如下所示:

在此输入图像描述

Matplotlib有可能吗?

干杯,维克多

python graphing visualization matplotlib histogram

64
推荐指数
1
解决办法
8万
查看次数

了解日期并使用R中的ggplot2绘制直方图

主要问题

我在理解为什么日期,标签和中断的处理没有像我在R中尝试使用ggplot2进行直方图时所预期的那样有问题.

我在找:

  • 我日期频率的直方图
  • 刻度标记位于匹配条的中心
  • %Y-b格式的日期标签
  • 适当的限制; 最小化网格空间边缘和最外边条之间的空白空间

我已将数据上传到pastebin以使其可重现.我创建了几个列,因为我不确定这样做的最佳方法:

> dates <- read.csv("http://pastebin.com/raw.php?i=sDzXKFxJ", sep=",", header=T)
> head(dates)
       YM       Date Year Month
1 2008-Apr 2008-04-01 2008     4
2 2009-Apr 2009-04-01 2009     4
3 2009-Apr 2009-04-01 2009     4
4 2009-Apr 2009-04-01 2009     4
5 2009-Apr 2009-04-01 2009     4
6 2009-Apr 2009-04-01 2009     4
Run Code Online (Sandbox Code Playgroud)

这是我试过的:

library(ggplot2)
library(scales)
dates$converted <- as.Date(dates$Date, format="%Y-%m-%d")

ggplot(dates, aes(x=converted)) + geom_histogram()
+      opts(axis.text.x = theme_text(angle=90))
Run Code Online (Sandbox Code Playgroud)

这会产生这个图表.我想要%Y-%b格式化,所以我在周围搜索并尝试以下内容,基于此SO:

ggplot(dates, aes(x=converted)) + geom_histogram() …
Run Code Online (Sandbox Code Playgroud)

datetime r histogram ggplot2

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

保存pandas.Series直方图图到文件

在ipython Notebook中,首先创建一个pandas Series对象,然后通过调用实例方法.hist(),浏览器显示该图.

我想知道如何将这个数字保存到文件(我的意思是不是通过右键单击并另存为,但脚本中需要的命令).

python histogram pandas

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

将正常曲线叠加到R中的直方图

我已经设法在网上找到如何将正常曲线叠加到R中的直方图,但我想保留直方图的正常"频率"y轴.请参阅下面的两个代码段,并注意在第二个代码段中,y轴被替换为"density".如何将y轴保持为"频率",就像在第一个图中一样.

作为奖励:我想在密度曲线上标记SD区域(最多3 SD).我怎样才能做到这一点?我试过了abline,但是这条线延伸到了图形的顶部,看起来很丑陋.

g = d$mydata
hist(g)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

g = d$mydata
m<-mean(g)
std<-sqrt(var(g))
hist(g, density=20, breaks=20, prob=TRUE, 
     xlab="x-variable", ylim=c(0, 2), 
     main="normal curve over histogram")
curve(dnorm(x, mean=m, sd=std), 
      col="darkblue", lwd=2, add=TRUE, yaxt="n")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

看看上面的图像中,y轴是"密度".我想把它变成"频率".

plot r gaussian histogram

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

比较两个直方图

对于一个小项目,我需要将一个图像与另一个图像进行比较 - 以确定图像是否大致相同.图像很小,从25到100px不等.图像意味着具有相同的图像数据但是非常不同,因此简单的像素相等检查将不起作用.考虑以下两种可能的情况:

  1. 观看展览的博物馆中的安全(CCTV)摄像机:我们希望快速查看两个不同的视频帧是否显示相同的场景,但是照明和摄像机焦点的细微差别意味着它们将不相同.
  2. 与以48x48渲染的相同图标相比,以64x64渲染的矢量计算机GUI图标的图片(但是两个图像将缩小到32x32,因此直方图具有相同的总像素数).

我决定使用直方图来表示每个图像,使用三个1D直方图:每个RGB通道一个 - 我可以安全地使用颜色并忽略纹理和边缘直方图(另一种方法是为每个图像使用单个3D直方图,但我避免这样做,因为它增加了额外的复杂性).因此,我需要比较直方图,看看它们有多相似,如果相似性度量超过某个阈值,那么我可以放心地说各个图像在视觉上是相同的 - 我将比较每个图像的相应通道直方图(例如图像1的红色直方图带有图像2的红色直方图,然后是图像1的蓝色直方图和图像2的蓝色直方图,然后是绿色直方图 - 所以我不是将图像1的红色直方图与图像2的蓝色直方图进行比较,这只是愚蠢的.

假设我有这三个直方图,它们代表三个图像的红色RGB通道的摘要(为简单起见,使用5个像素用于7像素图像):

H1            H2            H3 

  X           X                     X
  X   X       X       X             X
X X   X X     X X   X X     X X X X X
0 1 2 3 4     0 1 2 3 4     0 1 2 3 4

H1 = [ 1, 3, 0, 2, 1 ]
H2 = [ 3, 1, 0, 1, 2 ]
H3 = [ 1, 1, 1, 1, 3 ] 
Run Code Online (Sandbox Code Playgroud)

图像1( …

image-processing histogram

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

在Python中使用Counter()来构建直方图?

我在另一个问题上看到,我可以使用它Counter()来计算一组字符串中出现的次数.所以如果['A','B','A','C','A','A']我得到了Counter({'A':3,'B':1,'C':1}).但是现在,我如何使用该信息来构建直方图?

python histogram

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

在pandas DataFrame中绘制分组数据的直方图

我需要一些指导来确定如何在pandas数据帧中从分组数据中绘制直方图块.这是一个例子来说明我的问题:

from pandas import DataFrame
import numpy as np
x = ['A']*300 + ['B']*400 + ['C']*300
y = np.random.randn(1000)
df = DataFrame({'Letter':x, 'N':y})
grouped = df.groupby('Letter')
Run Code Online (Sandbox Code Playgroud)

在我的无知中,我尝试了这个代码命令:

df.groupby('Letter').hist()
Run Code Online (Sandbox Code Playgroud)

失败的错误消息"TypeError:无法连接'str'和'float'对象"

任何帮助最受赞赏.

python histogram pandas

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