据我所知,直方图函数中的选项Log = True仅指y轴.
P.hist(d,bins=50,log=True,alpha=0.5,color='b',histtype='step')
Run Code Online (Sandbox Code Playgroud)
我需要垃圾箱在log10中等间隔.有什么东西能做到吗?
我正在尝试在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工作,但后来我没有任何底轴.
我有问题从熊猫系列对象制作直方图,我不明白为什么它不起作用.代码之前运行良好,但现在却没有.
这是我的一些代码(具体来说,我正在尝试制作直方图的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) 我目前正在使用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有可能吗?
干杯,维克多
我在理解为什么日期,标签和中断的处理没有像我在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) 在ipython Notebook中,首先创建一个pandas Series对象,然后通过调用实例方法.hist(),浏览器显示该图.
我想知道如何将这个数字保存到文件(我的意思是不是通过右键单击并另存为,但脚本中需要的命令).
我已经设法在网上找到如何将正常曲线叠加到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轴是"密度".我想把它变成"频率".
对于一个小项目,我需要将一个图像与另一个图像进行比较 - 以确定图像是否大致相同.图像很小,从25到100px不等.图像意味着具有相同的图像数据但是非常不同,因此简单的像素相等检查将不起作用.考虑以下两种可能的情况:
我决定使用直方图来表示每个图像,使用三个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( …
我在另一个问题上看到,我可以使用它Counter()来计算一组字符串中出现的次数.所以如果['A','B','A','C','A','A']我得到了Counter({'A':3,'B':1,'C':1}).但是现在,我如何使用该信息来构建直方图?
我需要一些指导来确定如何在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'对象"
任何帮助最受赞赏.