As the image style in this blog:
I think it's a graphics drawn using MMA code, but how to use MMA to know the release time of each version to plot it?
Mathematica Stack Exchange is a question and answer site for users of Wolfram Mathematica. It only takes a minute to sign up.
Sign up to join this communityAs the image style in this blog:
I think it's a graphics drawn using MMA code, but how to use MMA to know the release time of each version to plot it?
Using TimeLinePlot
with the data from Daniel Huber's answer:
releasedates = SortBy[Last][
StringReplace["Mathematica " -> ""]@# -> AbsoluteTime[#2] & @@@ rdDHuber];
split = SplitBy[releasedates, First@StringSplit[First@#, "."] &];
stitched = Partition[
Extract[Values[#][[{1, -1}]] & /@ split, {{All, 1}, {-1, -1}},
Apply[Sequence]], 2, 1]
tlp1 = TimelinePlot[List /@ (DateInterval /@ stitched),
PerformanceGoal -> "Speed", AxesOrigin -> 0, Spacings -> 1,
Filling -> Below, ImageSize -> 1200];
tlp2 = TimelinePlot[Map[Labeled[#[[2]], #[[1]], Above] &] /@ split,
PlotLayout -> "Overlapped", Spacings -> 1,
PerformanceGoal -> "Speed"];
postProcess = ReplaceAll[
Text[t_, Offset[{0, y_}, c_], d_] :>
{Text[t, Offset[{0, y + 30}, c], {0, 0}, {0, 1}],
Line[{Offset[{0, y + 3}, c], Offset[{0, y + 15}, c]}], White,
Line[{Offset[{0, -y}, c], Offset[{0, -y - 50}, c]}]}];
zoom = AbsoluteTime /@ {{2014, 1}, {2023, 1}};
Column[{Show[tlp1, postProcess@tlp2,
Prolog ->
{AbsoluteThickness[10], Orange, CapForm["Round"], Line[Thread[{zoom, 0}]]}],
Show[tlp1, postProcess@tlp2, PlotRange -> {zoom, {8, All}}]}]
WolframLanguageData[All,{"FullVersionIntroduced","DateIntroduced"}]//Tally
too can get all date
$\endgroup$
The release dates can be see on the Internet page:
url = "https://www.wolfram.com/mathematica/quick-revision-history/";
It is not very difficult to get this page into MMA:
dat = URLRead[url, "Body"];
This is now a hugh string and the difficult task is to dissect this string. Regular expression is your friend here:
regex= RegularExpression["(Mathematica \\d+(\\.\\d+)+)</span>.*(\r\n.*){2}\r\n.*</span>(\\w+ \\d+)"]
With this we can extract the needed information from the string:
StringCases[dat,regex :> {"$1", "$4"}]
{{"Mathematica 13.2.1", "February 2023"}, {"Mathematica 13.2",
"December 2022"}, {"Mathematica 13.1",
"June 2022"}, {"Mathematica 13.0.1",
"February 2022"}, {"Mathematica 12.3.1",
"July 2021"}, {"Mathematica 12.3", "May 2021"}, {"Mathematica 12.2",
"December 2020"}, {"Mathematica 12.1.1",
"June 2020"}, {"Mathematica 12.1",
"March 2020"}, {"Mathematica 11.3",
"March 2018"}, {"Mathematica 11.2",
"September 2017"}, {"Mathematica 11.1.1",
"April 2017"}, {"Mathematica 11.1",
"March 2017"}, {"Mathematica 11.0.1",
"September 2016"}, {"Mathematica 10.4.1",
"April 2016"}, {"Mathematica 10.4",
"March 2016"}, {"Mathematica 10.3.1",
"December 2015"}, {"Mathematica 10.3",
"October 2015"}, {"Mathematica 10.2",
"July 2015"}, {"Mathematica 10.1",
"March 2015"}, {"Mathematica 10.0.2",
"December 2014"}, {"Mathematica 10.0.1",
"September 2014"}, {"Mathematica 10.0.0",
"July 2014"}, {"Mathematica 9.0.1",
"January 2013"}, {"Mathematica 9.0.0",
"November 2012"}, {"Mathematica 8.0.4",
"October 2011"}, {"Mathematica 8.0.1",
"March 2011"}, {"Mathematica 8.0",
"November 2010"}, {"Mathematica 7.0.1",
"March 2009"}, {"Mathematica 7.0",
"November 2008"}, {"Mathematica 6.0.3",
"June 2008"}, {"Mathematica 6.0.2",
"February 2008"}, {"Mathematica 6.0.1",
"July 2007"}, {"Mathematica 6.0", "May 2007"}, {"Mathematica 5.2",
"July 2005"}, {"Mathematica 5.1",
"November 2004"}, {"Mathematica 5.0",
"June 2003"}, {"Mathematica 4.2", "June 2002"}, {"Mathematica 4.1",
"November 2000"}, {"Mathematica 4.0",
"May 1999"}, {"Mathematica 3.0",
"September 1996"}, {"Mathematica 2.2",
"June 1993"}, {"Mathematica 2.1", "June 1992"}, {"Mathematica 2.0",
"January 1991"}, {"Mathematica 1.2",
"August 1989"}, {"Mathematica 1.0", "June 1988"}}