Plotting histogram in years like BCE, CE
1 次查看(过去 30 天)
显示 更早的评论
I want to plot a histogram of frequency of eruptions based on the years.
However, the data provided is not so simple. It has year in the form of BCE and CE, along with "unknowns". I want to get rid of the unknowns and count the number of eruptions. However, I cannot read the data as an integer/etc as there are strings in it. "500 CE" and "205 BCE" for example. Is there a way to plot the histogram accounting for such data? I have attached a photo of the data sample in the link.
So far, what I have is
% Locating the index for unknowns
ridunknowns = find(strcmp('Unknown',eruptyear));
% Changing the values of Unknowns to NaN in the vector
eruptyear([ridunknowns]) = {NaN};
0 个评论
采纳的回答
Steven Lord
2018-9-25
Define the format for your date data.
fmt = 'yyyy G';
Convert your data into a datetime array. "Unknown" dates become NaT.
S = {'3300 BCE'; '4040 BCE'; 'Unknown'; '1944 CE'};
DT = datetime(S, 'InputFormat', fmt, 'Format', fmt)
Generate 1000 year wide bins.
startBin = datetime('5000 BCE', 'InputFormat', fmt, 'Format', fmt);
endBin = datetime('2001 CE', 'InputFormat', fmt, 'Format', fmt);
E = startBin:calyears(1000):endBin
Create a histogram using the selected edges.
histogram(DT, E)
If instead you want century-wide bins you can specify that as the BinMethod.
histogram(DT, 'BinMethod', 'century')
1 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Histograms 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!