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