具有分割条的直方图

时间:2018-04-24 11:02:14

标签: python histogram wolfram-mathematica

我有助焊剂作为时间的函数。现在我需要制作所有通量的直方图,并且我还需要在每个条形图中输入关于给定N点出现的时间的信息。主要思想是将每个条形分成N个片段(N是给定通量值的重复次数),并且每个片段应具有取决于时间的颜色(颜色条)。有没有选择在Mathematica(或python)中轻松完成?我在Mathematica中尝试了Stacked Bar Chart选项但没有结果。如果您知道任何类似的问题已经解决,我将非常感谢您的链接。 下面是我在Mathematica中的代码的一部分,但是在这一刻我只能获得简单的直方图。

mydata=Import["MJD_Flux_HR.dat", {"Data"}];
time = mydata[[All, 1]];
Rate = mydata[[All, 2]];

Histogram[Log[Rate], 50, ChartElementFunction -> "FadingRectangle", ChartStyle -> Orange, GridLines -> {None, {2, 4, 6, 8, 10, 15, 20, 30, 40, 50, 60, 70, 80, 90, 100}}, GridLinesStyle -> Directive[Orange, Dashed],  AxesLabel -> {log[Flux], N}]

1 个答案:

答案 0 :(得分:0)

好的,我做到了!也许这种方法并不漂亮,但可能会对将来的某些人有所帮助。

我的剧本:

import csv
import numpy as np

mjd, mjd_b, rate, hr, Nb = [], [], [], [], []

data='MJD_Flux_HR_002_039.txt'
N=0
with open(data,'r') as csvfile:
    lines = csv.reader(csvfile, delimiter=' ')
    for row in lines:
       mjd.append(float(row[0]))
       rate.append(float(row[1]))
       hr.append(float(row[2]))
       N+=1 

for b in range(0,200):
   d=0
   for i in range(0,N):
       k=b+1
       if rate[i] > b and rate[i] < k:
           d=d+1
           with open('Hist_data.dat','ab') as f:
               np.savetxt(f, [[b, d,mjd[i]]],delimiter=" ", fmt=('%2.0d','% 3.0d','% 3.5f'))
           Nb.append(d)
           mjd_b.append(mjd[i])

   del Nb[:]
   del mjd_b[:]

因此我得到了我能够绘制的文件。 b在这里是一系列通量(在0和1,1和2之间,等等[计数/ s]),d不需要计算给定通量范围的多少次,但更多的是将每次重复放在Y轴上与相关时间(颜色)。 我把附上的图片放在下面的图片中。

enter image description here

相关问题