wd = WeatherData["SanDiego", "Temperature", {"Jan. 1, 2014", "Aug. 1, 2014", "Day"}]; (* for version 10+ evaluate: wd = wd // Normal // QuantityMagnitude; *) sundays = Pick[wd[[All, 1]], DayName /@ wd[[All, 1]], Sunday]; wednesdays = Pick[wd[[All, 1]], DayName /@ wd[[All, 1]], Wednesday]; `Ticks` at Wednesday noon: ticks = MapIndexed[{AbsoluteTime[#] + 60 60 12, Rotate["Week " <> ToString[First@#2], Pi/2]} &, wednesdays]; DateListPlot[wd, BaseStyle -> Thick, AspectRatio -> 1/4, FrameTicks -> {ticks, Automatic, None, None}, GridLines -> {sundays, None}, ImageSize -> 900, Joined -> True] ![enter image description here][1] **Update:** You can also use `DayMatchQ` instead of `DayName[#]==...`: Pick[wd[[All, 1]], DayMatchQ[#, Wednesday] & /@ wd[[All, 1]]] == wednesdays (* True *) Use different colors for different weeks: wd = WeatherData["Kirkland", "Temperature", {"Jan. 1, 2014", "Aug. 1, 2014", "Day"}]; wd2 = wd /. {x_, y_} /; DayMatchQ[x, Sunday] :> Sequence[{x, y}, {x, y}]; wd2b = Split[wd2, ! (DayMatchQ[#[[1]], Sunday] && DayMatchQ[#2[[1]], Sunday]) &]; DateListPlot[wd2b, BaseStyle -> Thick, AspectRatio -> 1/4, FrameTicks -> {ticks, Automatic, None, None}, GridLines -> {sundays, None}, ImageSize -> 900, Joined -> True, Filling -> Bottom] ![enter image description here][2] **Update 2:** If there are gaps in the data so that some `Sunday`s and/or `Wednesday`s are skipped as in the example provided by @penguin77 in the comments, then you can use dr = DateRange[wd[[1, 1]], wd[[-1, 1]]]; wednesdays = Pick[dr, DayMatchQ[#, Wednesday] & /@ dr]; sundays = Pick[dr, DayMatchQ[#, Sunday] & /@ dr]; Splitting the data into separate weeks would be more involved in this case. [1]: https://i.sstatic.net/oGE6y.png [2]: https://i.sstatic.net/6HIzn.png