Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

How to skip weekends in DateListPlot, ie, drawing 20 something data points for a month and not leaving 2 days gap between weeks? Currently DateListPlot occupied the actual number of days for a month and drawing a direct line between Friday and next Monday (where no weekend data available).

I want to draw something like this as Excel: Weekends skipped in Excel

While I get this in Mathematica: Weekends included

Sample data:

Dataset1 = {{{2014, 10, 1, 0, 0, 0}, 
326.8442322}, {{2014, 10, 2, 0, 0, 0}, 
335.284444}, {{2014, 10, 3, 0, 0, 0}, 
292.5086867}, {{2014, 10, 6, 0, 0, 0}, 
301.6750855}, {{2014, 10, 7, 0, 0, 0}, 
629.9616564}, {{2014, 10, 8, 0, 0, 0}, 
311.6753747}, {{2014, 10, 9, 0, 0, 0}, 
281.5024327}, {{2014, 10, 10, 0, 0, 0}, 
285.9985823}, {{2014, 10, 13, 0, 0, 0}, 
304.0455324}, {{2014, 10, 14, 0, 0, 0}, 
702.0810431}, {{2014, 10, 15, 0, 0, 0}, 
362.4479495}, {{2014, 10, 16, 0, 0, 0}, 
305.3800495}, {{2014, 10, 17, 0, 0, 0}, 
289.6995727}, {{2014, 10, 20, 0, 0, 0}, 
320.0506679}, {{2014, 10, 21, 0, 0, 0}, 
904.8753329}, {{2014, 10, 22, 0, 0, 0}, 
337.5214556}, {{2014, 10, 23, 0, 0, 0}, 
278.8865421}, {{2014, 10, 24, 0, 0, 0}, 
300.4519167}, {{2014, 10, 27, 0, 0, 0}, 
314.3109259}, {{2014, 10, 28, 0, 0, 0}, 
796.3015273}, {{2014, 10, 29, 0, 0, 0}, 
368.7108282}, {{2014, 10, 30, 0, 0, 0}, 
305.3858455}, {{2014, 10, 31, 0, 0, 0}, 321.1488558}};

g1 = DateListPlot[Dataset1, PlotRange -> {0, 1050}]
share|improve this question
    
Please provide some data and the code you used to get the plot. – Edmund Mar 7 at 3:36
    
I've updated the sample graphs with data – Leonx Mar 7 at 4:16
up vote 6 down vote accepted

I don't think this is logic to be done using DateListPlot because that will contradict the main idea of DateListPlot (as far as I understand DateListPlot).

In my opinion the easy way is to use the normal ListLinePlot.

data2 = MapAt[
   DateString[#, {"Day", "  ", "DayNameShort", "  ", "MonthNameShort",
       "/", "Year"}] &, Dataset1, {;; , 1}];
tiks = Transpose[{Range@Length[data2],Rotate[#, Pi/2] & /@ data2[[;; , 1]]}];
ListLinePlot[data2[[;; , 2]], PlotRange -> All,Ticks -> {tiks, Automatic}]

enter image description here

share|improve this answer
    
I see... thanks! I suppose same goes to DateListBarChart (ie, using BarChart instead)? – Leonx Mar 7 at 5:52
3  
@Leonx - DateListBarChart is not a built-in Mathematica function. It is a custom function that was written by someone in your organisation. – Verbeia Mar 7 at 6:45
    
@Verbeia, I am sorry, I didn't read carefully enough. – Leonx Mar 7 at 22:52
ListLinePlot[d1[[All, 2]], PlotRange -> All, 
 Ticks -> {Transpose[{Range@Length@d1, Rotate[#, -Pi/2] & /@ (DateString[#, "DateShort"] 
           & /@ d1[[All, 1]])}], Automatic}]

Mathematica graphics

if your list contains "holes", you'll need to fill them up for the plot to be meaningful:

d2 = Join[d1[[;; 5]], d1[[9 ;;]]];
r = DateRange[d2[[All, 1]][[1, ;; 3]], d2[[All, 1]][[-1, ;; 3]]]
d3 = SortBy[Join[d2, {#, 0} & /@ Select[Complement[r, d2[[All, 1, ;; 3]]], 
     DayName@# != Sunday && DayName@# != Saturday &]], AbsoluteTime[#[[1]]] &]
ListLinePlot[d3[[All, 2]], PlotRange -> All, 
 Ticks -> {Transpose[{Range@Length@d3, Rotate[#, -Pi/2] & /@ (DateString[#, "DateShort"] & /@ 
        d3[[All, 1]])}], Automatic}]

Mathematica graphics

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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