本文主要是介绍ROOT学习——显示带有蜡烛图的THStack(candleplotstack.C),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
蜡烛图又称日本线、K线、阴阳线、棒线等,目前常用的说法百是“K线”以下统称K线。K线源于日本德川幕府时代(1603~1867年)的米市交易,用来计算米价每天的涨跌,后来把它引入股票市场价格走势的分析中,目前已成为股票、外汇技术分析中的重要方法。是技术分析的一种,最早为日本人于十九世纪所度创,被当时日本米市的商人用来记录米市的行知情与价格波动,包括开市价、收市价、最高价及最低价,阳烛代表当日升市,阴烛代表跌市。这种图表分析法在当时的中国以至整个东南亚地区均尤为流行。由于用这种方法绘制出来的图表形状颇似一根根蜡烛道,加上这些蜡烛有黑白之分,因而也叫阴阳线图表。通过K线图,人们能够把每日或某一周期的市况表现完全记录下来,股价经过一段时间的盘档后,在图上即形成一种特殊区域或形版态,不同的形态显示出不同意义。可以从这些形态的变化中摸索出一些有规律的东西出来。权K线图形态可分为反转形态、整理形态及缺口和趋向线等。后K线图因其细腻独到的标画方式而被引入到股市及期货市场。
设置时间偏置:
gStyle->SetTimeOffset(0);
创建一个随机数:
TRandom *rng = new TRandom();
创建两个时间数:
TDatime *dateBegin = new TDatime(2010,1,1,0,0,0);
TDatime *dateEnd = new TDatime(2011,1,1,0,0,0);
创建三个二维直方图:
int bins = 1000;
TH2I *h1 = new TH2I("h1","Machine A",6,dateBegin->Convert(),dateEnd->Convert(),bins,0,1000);
TH2I *h2 = new TH2I("h2","Machine B",6,dateBegin->Convert(),dateEnd-Convert(),bins,0,1000);
TH2I *hsum = new TH2I("h4","Sum",6,dateBegin->Convert(),dateEnd->Convert(),bins,0,1000);
生成高斯随机数填充直方图:
float Rand;
for (int i = dateBegin->Convert(); i < dateEnd->Convert(); i+=86400*30) {for (int j = 0; j < 1000; j++) {Rand = rng->Gaus(500+sin(i/10000000.)*100,50); h1->Fill(i,Rand); hsum->Fill(i,Rand);Rand = rng->Gaus(500+sin(i/12000000.)*100,50); h2->Fill(i,Rand); hsum->Fill(i,Rand);}
}
设置h2绘制线的颜色:
h2->SetLineColor(kRed);
设置hsum的填充色:
hsum->SetFillColor(kGreen);
创建一块画布:
TCanvas *c1 = new TCanvas();
创建THStack类(直方图叠加类)hs:
THStack *hs = new THStack("hs","Machine A+B");
将三个直方图添加到hs中:
hs->Add(h1); //以hs绘制格式绘制
hs->Add(h2,"candle2"); //以candle2格式绘制
hs->Add(hsum, "violin1"); //以violine1格式绘制
绘制hs:
hs->Draw("candle3");
将hs的x轴分成410个区域:
hs->GetXaxis()->SetNdivisions(410);
设置网格:
gPad->SetGrid(1,0);
设置x轴显示类型:
hs->GetXaxis()->SetTimeDisplay(1);
设置x轴显示时间的格式:
hs->GetXaxis()->SetTimeFormat("%m/%y");
设置x轴标题:
hs->GetXaxis()->SetTitle("Date [month/year]");
对画板进行调整更新:
c1->Modified();
添加图例:
gPad->BuildLegend(0.75,0.75,0.95,0.95,"");
代码地址:https://github.com/root-project/root/blob/master/tutorials/hist/candleplotstack.C
这篇关于ROOT学习——显示带有蜡烛图的THStack(candleplotstack.C)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!