我的数据主要集中在一个小范围(1-10),但有很多点(比如10%)在(10-1000).我想为这些数据绘制直方图,重点放在(1-10),但也会显示(10-1000)数据.类似于直方图的对数刻度.
是的,我知道这意味着并非所有垃圾桶都具有相同的尺寸
一个简单的hist(x)
给出
虽然
hist(x,breaks=c(0,1,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2,3,4,5,7.5,10,15,20,50,100,200,500,1000,10000)))
给了
这些都不是我想要的.
按照这里的答案更新我现在产生的东西几乎就是我想要的东西(我用连续的情节代替条形直方图):
breaks <- c(0,1,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2,4,8)
ggplot(t,aes(x)) + geom_histogram(colour="darkblue", size=1, fill="blue") + scale_x_log10('true size/predicted size', breaks = breaks, labels = breaks)![alt text][3]
Run Code Online (Sandbox Code Playgroud)
唯一的问题是我想在比例尺和实际条形图之间进行匹配.这样做有两个选择:一个是简单地使用绘制条形的实际边距(如何?)然后得到"丑陋"的x轴标签,如1.1754,1.2985等.另一个,我更喜欢,是控制实际使用的箱子边距使他们匹配休息时间.
有一种绘制系列直方图的方法,但是有一个函数可以检索直方图计数以在其上进行进一步的计算吗?
我继续使用numpy的函数来执行此操作,并在需要时将结果转换为DataFrame或Series.一直与熊猫物体呆在一起会很好.
ggplot2挑战的latticist需要帮助:在直方图中请求变量per-facet中断的语法是什么?
library(ggplot2)
d = data.frame(x=c(rnorm(100,10,0.1),rnorm(100,20,0.1)),par=rep(letters[1:2],each=100))
# Note: breaks have different length by par
breaks = list(a=seq(9,11,by=0.1),b=seq(19,21,by=0.2))
ggplot(d, aes(x=x) ) +
geom_histogram() + ### Here the ~breaks should be added
facet_wrap(~ par, scales="free")
Run Code Online (Sandbox Code Playgroud)
根据特殊要求,并说明为什么我不是一个伟大的ggplot粉丝,lattice
版本
library(lattice)
d = data.frame(x=c(rnorm(100,10,0.1),rnorm(100,20,0.1)),par=rep(letters[1:2],each=100))
# Note: breaks have different length by par
myBreaks = list(a=seq(8,12,by=0.1),b=seq(18,22,by=0.2))
histogram(~x|par,data=d,
panel = function(x,breaks,...){
# I don't know of a generic way to get the
# grouping variable with histogram, so
# this is not …
Run Code Online (Sandbox Code Playgroud) 这是我的数据:
type<-rep(c(0,1),100)
diff<-rnorm(100)
data<-data.frame(type,diff)
Run Code Online (Sandbox Code Playgroud)
如果我想绘制历史图diff
,我这样做:
hist(data$diff)
Run Code Online (Sandbox Code Playgroud)
但是我想要做什么来分割我的直方图type
.我能做到这一点:
par(mfrow=c(1,2))
hist(data$diff[data$type==0])
hist(data$diff[data$type==1])
Run Code Online (Sandbox Code Playgroud)
但这给我的是两个不同的直方图.我想要做的就是生产出一个直方图diff
的0
一侧及diff
的1
,在另一侧.像这样的东西,条形连续,没有断裂或边界.这可能意味着轴将被分成两个因子.
我在MATLAB中使用极坐标图(POLAR(THETA,RHO)).
是否有一种简单的方法来确定径向轴的范围,比如1.5?
我正在寻找类似于笛卡尔坐标轴的xlim,ylim命令的东西.尚未在文档中找到任何内容.
我试图在Python中创建字母频率的条形图.我认为实现这一目标的最佳方法是matplotlib,但我无法破译文档.是否可以标记matplotlib.pyplot.hist图的条形,每个条形码只有一个字母,而不是数字轴?我认为一定是,但我之前没有使用过matplotlib.
这是我之后的图形,呈现为文本:
|
| *
| * *
| * * *
+----------
A B C
Run Code Online (Sandbox Code Playgroud) 我有一堆csv数据集,每个大小约10Gb.我想从他们的列生成直方图.但似乎在numpy中执行此操作的唯一方法是首先将整个列加载到numpy数组中,然后调用numpy.histogram
该数组.这会消耗不必要的内存量.
numpy支持在线分类吗?我希望能够在读取它们的同时逐行迭代我的csv.这种方式在任何时候最多一行都在内存中.
不难自我动手,但想知道是否有人已经发明了这个轮子.
我在2D,x,y中有一些原始数据,如下所示.我想从数据中生成二维直方图.通常,将x,y值除以大小为0.5的二进制数,并计算每个二进制数中的出现次数(同时对x和y).有没有办法做到这一点?
> df
x y
1 4.2179611 5.7588577
2 5.3901279 5.8219784
3 4.1933089 6.4317645
4 5.8076411 5.8999598
5 5.5781166 5.9382342
6 4.5569735 6.7833469
7 4.4024492 5.8019719
8 4.1734975 6.0896355
9 5.1707871 5.5640962
10 5.6380258 6.9112775
11 4.6405353 5.2251746
12 4.1809004 6.1127144
13 4.2764079 5.4598799
14 5.4466446 6.0130047
15 5.2443804 5.5421851
16 5.7521515 5.4115965
17 4.9667564 5.3519795
18 4.5007141 6.8669231
19 5.0268273 5.7681888
20 4.4738948 6.4241168
21 4.4116357 5.9819519
22 4.5741988 6.4595129
23 4.0839075 6.8105259
24 4.7154364 6.5054761
25 4.8986785 5.5511226 …
Run Code Online (Sandbox Code Playgroud) 当我的一些数据包含"非数字"值时,我在制作直方图时遇到问题.我可以通过使用nan_to_num
numpy 摆脱错误,但是我得到了很多零值,这也搞乱了直方图.
pylab.figure()
pylab.hist(numpy.nan_to_num(A))
pylab.show()
Run Code Online (Sandbox Code Playgroud)
因此,我们的想法是制作另一个阵列,其中所有的纳米值都消失了,或者只是以某种方式在直方图中掩盖它们(最好使用一些内置方法).
如果我有一个矢量(例如v<-runif(1000)
),我可以绘制它的直方图(它或多或少看起来像水平线,因为v
它是来自均匀分布的样本).
但是,假设我有一个向量及其相关权重(例如,w<-seq(1,1000)
除此之外v<-sort(runif(1000))
).例如,这是table()
一个更大的数据集的结果.
如何绘制新的直方图?(它应该看起来更像是y=x
这个例子中的线).
我想我可以table
通过使用rep
(hist(rep(v,w))
)反转效果但是这个"解决方案"看起来很丑陋且资源丰富(创建一个大小的中间向量sum(w)
),它只支持整数权重.