5
$\begingroup$

As the image style in this blog: enter image description here

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?

$\endgroup$

2 Answers 2

8
$\begingroup$

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}}]}]

enter image description here

$\endgroup$
1
  • 1
    $\begingroup$ WolframLanguageData[All,{"FullVersionIntroduced","DateIntroduced"}]//Tally too can get all date $\endgroup$
    – yode
    May 26 at 4:53
5
$\begingroup$

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"}}
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.