Filter löschen
Filter löschen

Plotting histogram in years like BCE, CE

1 Ansicht (letzte 30 Tage)
Madlab
Madlab am 25 Sep. 2018
Kommentiert: Danny am 10 Feb. 2022
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};

Akzeptierte Antwort

Steven Lord
Steven Lord am 25 Sep. 2018
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 Kommentar
Danny
Danny am 10 Feb. 2022
Can one use only the positive or negative sign instead of BCE/CE ?

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by