我有助焊剂作为时间的函数。现在我需要制作所有通量的直方图,并且我还需要在每个条形图中输入关于给定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}]
答案 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轴上与相关时间(颜色)。 我把附上的图片放在下面的图片中。