diff --git a/docs/data/tsa.csv b/docs/data/tsa.csv new file mode 120000 index 0000000000..e8ead0a299 --- /dev/null +++ b/docs/data/tsa.csv @@ -0,0 +1 @@ +../../test/data/tsa.csv \ No newline at end of file diff --git a/docs/marks/difference.md b/docs/marks/difference.md index 6fb56f19d3..4997811319 100644 --- a/docs/marks/difference.md +++ b/docs/marks/difference.md @@ -2,63 +2,114 @@ import * as Plot from "@observablehq/plot"; import * as d3 from "d3"; -import {ref, shallowRef, onMounted} from "vue"; +import {computed, ref, shallowRef, onMounted} from "vue"; const shift = ref(365); const aapl = shallowRef([]); -const goog = shallowRef([]); +const gistemp = shallowRef([]); +const tsa = shallowRef([{Date: new Date("2020-01-01")}]); const temperature = shallowRef([{date: new Date("2020-01-01")}]); onMounted(() => { d3.csv("../data/aapl.csv", d3.autoType).then((data) => (aapl.value = data)); - d3.csv("../data/goog.csv", d3.autoType).then((data) => (goog.value = data)); + d3.csv("../data/gistemp.csv", d3.autoType).then((data) => (gistemp.value = data)); + d3.csv("../data/tsa.csv",d3.autoType).then((data) => (tsa.value = data)); d3.csv("../data/sf-sj-temperatures.csv", d3.autoType).then((data) => (temperature.value = data.filter((d) => d.date.getUTCFullYear() === 2020))); }); -const offset = (date) => d3.utcDay.offset(date, shift.value); - # Difference mark -The **difference mark** compares a metric to another metric. +The **difference mark** compares a metric. Like the [area mark](./area.md), the region between two lines is filled; unlike the area mark, alternating color shows when the primary metric is above or below the secondary metric. + +In the simplest case, the difference mark compares a metric to a constant, often zero. For example, the plot below shows the [global surface temperature anomaly](https://data.giss.nasa.gov/gistemp/) from 1880–2016; 0° represents the 1951–1980 average; above-average temperatures are in red, while below-average temperatures are in blue. + +:::plot +```js +Plot.differenceY(gistemp, { + x: "Date", + y: "Anomaly", + positiveFill: "red", + negativeFill: "blue", + tip: true +}).plot({y: {grid: true}}) +``` +::: + +Applying a 24-month [moving average](../transforms/window.md) improves readability by smoothing the noise. + +:::plot +```js +Plot.differenceY( + gistemp, + Plot.windowY(12 * 2, { + x: "Date", + y: "Anomaly", + positiveFill: "red", + negativeFill: "blue", + tip: true + }) +).plot({y: {grid: true}}) +``` +::: + +More powerfully, the difference mark compares two metrics. + +Comparing metrics is most convenient when the data has a column for each. For example, the plot below shows the number of daily travelers through TSA checkpoints in 2020 compared to 2019. In the first two months of 2020, there were on average more travelers per day than 2019; yet when COVID-19 hit, there were many fewer travelers per day, dropping almost to zero. :::plot ```js Plot.plot({ x: {tickFormat: "%b"}, - y: {grid: true}, + y: {grid: true, label: "Travelers"}, marks: [ - Plot.ruleY([32]), - Plot.differenceY(temperature, Plot.windowY(14, { - filter: (d) => d.station === "SF", - x: "date", - y: "tmin", - y1: (d, i) => temperature[i + 1]?.tmin, - tip: true - })) + Plot.axisY({label: "Daily travelers (thousands, 2020 vs. 2019)", tickFormat: (d) => d / 1000}), + Plot.ruleY([0]), + Plot.differenceY(tsa, { + x: "Date", + y1: "2019", + y2: "2020", + tip: {format: {x: "%B %-d"}} + }) ] }) ``` ::: +If the data is “tall” rather than “wide” — TK explain what this means — you can use the [group transform](../transforms/group.md) with the [find reducer](../transforms/group.md#find): group the rows by date, and then for the two output columns **y1** and **y2**, find the desired corresponding row. The plot below shows daily minimum temperature for San Francisco compared to San Jose. The insulating effect of the fog keeps San Francisco warmer in winter and cooler in summer, reducing seasonal variation. + :::plot ```js Plot.plot({ + x: {tickFormat: "%b"}, y: {grid: true}, marks: [ - Plot.ruleY([1]), - Plot.differenceY(aapl, Plot.normalizeY({ - x: "Date", - y: "Close", - y1: Plot.valueof(goog, "Close"), - tip: true - })) + Plot.ruleY([32]), + Plot.differenceY( + temperature, + Plot.windowY( + 14, + Plot.groupX( + { + y1: Plot.find((d) => d.station === "SJ"), + y2: Plot.find((d) => d.station === "SF") + }, + { + x: "date", + y: "tmin", + tip: true + } + ) + ) + ) ] }) ``` ::: +The difference mark can also be used to compare a metric *to itself* using the [shift transform](../transforms/shift.md). This is especially useful for time series that exhibit [periodicity](https://en.wikipedia.org/wiki/Seasonality) — which is most of them, and certainly ones that involve human behavior. In this way a difference mark can show week-over-week or year-over-year growth. +

-:::plot hidden +:::plot ```js -Plot.plot({ - y: {grid: true}, - marks: [ - Plot.differenceY(aapl, {x: "Date", y: "Close", shift: `${shift} days`}) - ] -}) +Plot.differenceY(aapl, Plot.shiftX(`${shift} days`, {x: "Date", y: "Close"})).plot({y: {grid: true}}) ``` ::: -```js-vue -Plot.plot({ - y: {grid: true}, - marks: [ - Plot.differenceY(aapl, {x: "Date", y: "Close", shift: "{{ shift }} days"}) - ] -}) -``` +TK Something about if you sold Apple stock after holding it for a year, you’d tend to do pretty well. But if you hold it for less time, you see more blue. And even if you held it for a year, you could have still lost money if you sold in most of 2016. Even the unluckiest person would have made money if they held Apple stock for 780+ days (in 2015–2018). ## Difference options diff --git a/test/data/README.md b/test/data/README.md index 96068c5f65..303710c6dc 100644 --- a/test/data/README.md +++ b/test/data/README.md @@ -186,6 +186,10 @@ https://gist.github.com/chrtze/c74efb46cadb6a908bbbf5227934bfea TSA https://www.tsa.gov/coronavirus/passenger-throughput +## tsa.csv +TSA +https://www.tsa.gov/travel/passenger-volumes + ## us-congress-2023.csv Members of U.S. Congress, April 2023 https://github.com/unitedstates/congress-legislators diff --git a/test/data/tsa.csv b/test/data/tsa.csv new file mode 100644 index 0000000000..1111819b29 --- /dev/null +++ b/test/data/tsa.csv @@ -0,0 +1,365 @@ +Date,2023,2022,2021,2020,2019 +2023-12-31,,1932949,1616850,1192881,2178656 +2023-12-30,,2367709,1650795,805990,2311732 +2023-12-29,,2168039,2049604,874406,2392331 +2023-12-28,,2143566,2017937,1163696,2133253 +2023-12-27,,2163901,1995747,1019347,2009880 +2023-12-26,,2211993,2089186,1111751,2500396 +2023-12-25,,1792282,2070554,1284599,2575985 +2023-12-24,,1827279,1533398,1128773,2470786 +2023-12-23,,2079519,1709601,616469,2582580 +2023-12-22,,2345767,2187792,846520,2552194 +2023-12-21,,2416381,2081297,1191123,1937235 +2023-12-20,,2199432,1979089,992167,1981433 +2023-12-19,,2258485,2098540,954782,2490503 +2023-12-18,,2352352,2118528,1064619,2519399 +2023-12-17,,2225557,2035273,1073563,2487987 +2023-12-16,,2437173,2233754,1066747,2608088 +2023-12-15,,2282054,2062579,846934,2471408 +2023-12-14,,1981890,1762920,641966,2234374 +2023-12-13,,1803264,1520251,552024,2009112 +2023-12-12,,2157893,1912915,752451,2250386 +2023-12-11,,2227120,2040364,865014,2300248 +2023-12-10,,1878353,1669737,662380,1893871 +2023-12-09,,2287095,2045674,787489,2388029 +2023-12-08,,2199544,1959937,754307,2362310 +2023-12-07,,1876027,1610785,564372,2020488 +2023-12-06,,1691907,1459054,501513,1897051 +2023-12-05,,2132514,1854048,703546,2226290 +2023-12-04,,2256037,2068792,837137,2292079 +2023-12-03,,1783271,1566729,629430,1755801 +2023-12-02,,2124514,1952294,753951,2278205 +2023-12-01,,2044164,1866275,738050,2262878 +2023-11-30,,1886607,1660506,632356,2054380 +2023-11-29,,1945377,1810460,780283,2280403 +2023-11-28,,2412397,2237087,981912,2591470 +2023-11-27,,2560623,2451300,1176091,2882915 +2023-11-26,,2268189,2208192,964630,2648268 +2023-11-25,,1980837,1778983,820399,1968137 +2023-11-24,,1400490,1382230,560902,1591158 +2023-11-23,,2455142,2311978,1070967,2624250 +2023-11-22,,2299346,2207949,912090,2435170 +2023-11-21,,2265574,2081064,917354,2254188 +2023-11-20,,2327284,2213716,1047934,2321546 +2023-11-19,,2148196,2004579,984369,2194291 +2023-11-18,,2451996,2242956,1019836,2550459 +2023-11-17,,2316875,2044545,907332,2428095 +2023-11-16,,1965673,1624511,703135,2071631 +2023-11-15,,1889169,1491890,611497,1900895 +2023-11-14,,2263943,2010601,883157,2298856 +2023-11-13,,2435219,2150150,978297,2396681 +2023-11-12,,1871427,1559772,697360,1807230 +2023-11-11,,2317632,2001439,881579,2437211 +2023-11-10,,2176720,2064753,866679,2364920 +2023-11-09,,1932418,1691526,674633,2072207 +2023-11-08,,1881131,1456657,596475,2150003 +2023-11-07,,2208501,1955530,836600,2465392 +2023-11-06,,2390132,2152721,973020,2356349 +2023-11-05,,1917434,1527465,689951,1908805 +2023-11-04,,2307677,2035406,895091,2544350 +2023-11-02,2396776,2253501,1940302,867105,2507365 +2023-11-01,2144699,1897398,1525948,636533,2147882 +2023-10-31,1657694,1978549,1487874,575829,2005101 +2023-10-30,2287637,1925030,1992577,846138,2403304 +2023-10-29,2513086,2241429,1845965,936092,2459525 +2023-10-28,2015907,1832252,1518020,618476,1836781 +2023-10-27,2615422,2328910,1982773,892712,2319906 +2023-10-26,2619848,2310460,1927041,873636,2047910 +2023-10-25,2243974,2057463,1547075,666957,2066516 +2023-10-24,2133622,1981651,1503587,648517,1910506 +2023-10-23,2603743,2322640,1989373,898735,2347017 +2023-10-22,2760352,2493556,2107839,983745,2478287 +2023-10-21,2161733,2005688,1626185,755287,1931971 +2023-10-20,2671897,2444488,2108582,958437,2594337 +2023-10-19,2684362,2429966,2046694,934386,2541581 +2023-10-18,2333408,2110090,1647089,694150,2245199 +2023-10-17,2212049,2012185,1446353,662484,2126637 +2023-10-16,2623372,2358741,2001297,921031,2514673 +2023-10-15,2785829,2501080,2213296,1031505,2606266 +2023-10-14,2226278,2036948,1704466,788743,2049855 +2023-10-13,2673110,2483029,2070878,973046,2637667 +2023-10-12,2695875,2413700,2048398,950024,2581007 +2023-10-11,2361366,2119841,1641419,717940,2317763 +2023-10-10,2285808,2089339,1695970,680894,2313632 +2023-10-09,2676350,2409293,2083627,958440,2616771 +2023-10-08,2675250,2425644,2086146,984234,2555333 +2023-10-07,2228917,2018017,1645563,769868,2074718 +2023-10-06,2748633,2474023,2169783,968545,2688032 +2023-10-05,2683860,2376236,2063090,936915,2605291 +2023-10-04,2193658,1996679,1563565,668519,2215233 +2023-10-03,1989851,1822948,1390201,590766,2035628 +2023-10-02,2468894,2124817,1842054,816838,2400153 +2023-10-01,2675853,2305647,2100167,900911,2542118 +2023-09-30,2140635,1887684,1534114,677661,1921185 +2023-09-29,2602713,2198151,2011794,857186,2526835 +2023-09-28,2594802,2060656,1934592,855908,2447687 +2023-09-27,2132572,1724121,1448369,634046,2082179 +2023-09-26,2054526,1842212,1334997,568688,1998980 +2023-09-25,2526268,2261208,1849171,797699,2368818 +2023-09-24,2671645,2379386,2102155,873038,2452596 +2023-09-23,2065096,1922757,1525438,659350,1966234 +2023-09-22,2684769,2442492,2019891,826329,2547611 +2023-09-21,2638133,2366489,1904732,826316,2510926 +2023-09-20,2198837,2004967,1460478,608726,2188236 +2023-09-19,1989431,1898605,1338166,549741,2033490 +2023-09-18,2494722,2263507,1820152,769936,2431388 +2023-09-17,2638689,2387683,2075468,847968,2517826 +2023-09-16,1978051,1888257,1476269,638575,1938402 +2023-09-15,2583460,2375510,1942337,812214,2571924 +2023-09-14,2584180,2358131,1851345,784746,2455410 +2023-09-13,2105523,1976151,1455913,577847,2146857 +2023-09-12,1988191,1816435,1271516,522383,2013050 +2023-09-11,2398612,2230866,1672895,729558,2405832 +2023-09-10,2571775,2340559,1966456,809850,2485134 +2023-09-09,1984276,1829049,1363653,613703,1879822 +2023-09-08,2393743,2224222,1792979,731353,2484025 +2023-09-07,2267836,2120200,1685668,755051,2449302 +2023-09-06,1958730,1835889,1439804,616923,2005867 +2023-09-05,2237980,2088456,1662932,704075,1943379 +2023-09-04,2636833,2409938,2025556,935308,2292985 +2023-09-03,2074848,1979923,1630786,689630,2370003 +2023-09-02,2082990,1903950,1545955,664640,1755502 +2023-09-01,2727888,2479578,2129999,968673,2198828 +2023-08-31,2599387,2324033,1896846,877698,2109858 +2023-08-30,2005559,2009736,1465197,578131,1889044 +2023-08-29,1879838,1768689,1345064,516068,2037750 +2023-08-28,2339838,2100633,1629475,711178,2278159 +2023-08-27,2531104,2319869,1900658,807695,1887845 +2023-08-26,2063356,1888903,1511294,591734,1954902 +2023-08-25,2509338,2284831,1853622,738873,2658558 +2023-08-24,2492828,2263665,1826310,721060,2561109 +2023-08-23,2155549,1997252,1539707,540043,2188688 +2023-08-22,2095330,1960482,1468219,523186,2015088 +2023-08-21,2479491,2260555,1820355,726788,2358007 +2023-08-20,2526168,2348153,1965020,841806,2493162 +2023-08-19,2252155,2014843,1685462,625822,2039233 +2023-08-18,2601048,2358565,1990608,764468,2559244 +2023-08-17,2591257,2335005,1945026,772380,2533184 +2023-08-16,2295943,2051652,1678231,586718,2306838 +2023-08-15,2265628,2016730,1607238,565946,2247446 +2023-08-14,2537577,2276507,1980585,773319,2576965 +2023-08-13,2672509,2399196,2114166,862949,2584444 +2023-08-12,2322724,2094410,1811767,689895,2171962 +2023-08-11,2648556,2401029,2065379,783744,2627564 +2023-08-10,2648442,2379355,2045301,761821,2602446 +2023-08-09,2397657,2112967,1761348,590749,2391906 +2023-08-08,2365795,2049473,1727075,559420,2306829 +2023-08-07,2593050,2340305,2022858,761861,2567986 +2023-08-06,2736096,2438788,2168264,831789,2647897 +2023-08-05,2403611,2178580,1925641,683212,2290340 +2023-08-04,2690660,2406372,2109091,762547,2725000 +2023-08-03,2658817,2360671,2063720,743599,2707986 +2023-08-02,2419866,2117390,1855299,595739,2430094 +2023-08-01,2352706,2053497,1797120,543601,2387115 +2023-07-31,2683055,2373400,2031758,737235,2619406 +2023-07-30,2793207,2486969,2238462,799861,2688640 +2023-07-29,2457939,2211091,2007412,709033,2367967 +2023-07-28,2785404,2464079,2198585,767320,2730936 +2023-07-27,2710923,2414062,2127634,718310,2742882 +2023-07-26,2374802,2238047,1923980,573200,2542365 +2023-07-25,2349592,2146087,1858328,536756,2438967 +2023-07-24,2674653,2386005,2124474,700043,2613346 +2023-07-23,2789694,2494885,2177129,751205,2700723 +2023-07-22,2486267,2190483,1942871,649027,2364925 +2023-07-21,2780893,2464194,2159300,724770,2732770 +2023-07-20,2739648,2440027,2101343,704815,2705399 +2023-07-19,2512531,2226450,1934918,570951,2561911 +2023-07-18,2404254,2142454,1871986,530421,2499460 +2023-07-17,2736189,2363728,2141429,695330,2635312 +2023-07-16,2732581,2453236,2227704,747422,2727355 +2023-07-15,2486399,2196011,1979981,646654,2396462 +2023-07-14,2738536,2449536,2199815,720378,2776960 +2023-07-13,2720764,2402480,2152053,706164,2716828 +2023-07-12,2450645,2188234,1900945,589285,2522563 +2023-07-11,2350817,2072335,1832878,540268,2447177 +2023-07-10,2683003,2318551,2093066,697985,2615115 +2023-07-09,2634012,2443836,2198635,754545,2669717 +2023-07-08,2430950,2145996,1987652,656284,2312178 +2023-07-07,2555001,2288984,2147903,711124,2716812 +2023-07-06,2529182,2245980,2027364,709653,2608209 +2023-07-05,2481122,2136035,1880160,632498,2515902 +2023-07-04,2007445,2209031,1889911,641761,2506859 +2023-07-03,2288649,2086854,2160147,755555,2748718 +2023-07-02,2529730,2102878,1681896,732123,2795369 +2023-07-01,2588335,2169068,1915017,466669,2345846 +2023-06-30,2884783,2501366,2196411,718988,2184253 +2023-06-29,2759141,2455588,2147090,764761,2088760 +2023-06-28,2530701,2237932,1920663,626516,2547889 +2023-06-27,2378082,2147125,1808306,500054,2347767 +2023-06-26,2680657,2374892,2066964,625235,2455536 +2023-06-25,2756488,2469720,2167380,633810,2632030 +2023-06-24,2456097,2198546,1918705,546310,2368846 +2023-06-23,2771620,2471808,2137584,632984,2730515 +2023-06-22,2715730,2453936,2085327,623624,2711222 +2023-06-21,2491306,2197876,1801329,494826,2594661 +2023-06-20,2436834,2158912,1795141,471421,2506510 +2023-06-19,2730317,2431925,2030577,607540,2716428 +2023-06-18,2640229,2398687,2100761,590456,2719643 +2023-06-17,2435989,2186387,1882381,507129,2378559 +2023-06-16,2785529,2454485,2081115,587908,2772903 +2023-06-15,2730123,2387496,2039425,576514,2728786 +2023-06-14,2452085,2238873,1792370,441829,2552395 +2023-06-13,2332992,2139865,1678688,417924,2466574 +2023-06-12,2625141,2389152,1800954,534528,2699580 +2023-06-11,2722225,2456971,2097433,544046,2642083 +2023-06-10,2322200,2153865,1812797,437119,2318946 +2023-06-09,2675108,2443671,2028961,519304,2727860 +2023-06-08,2628367,2396538,1975189,502209,2675686 +2023-06-07,2341044,2175579,1669537,386969,2509058 +2023-06-06,2220737,2067274,1560561,338382,2433189 +2023-06-05,2555015,2286429,1828396,430414,2644981 +2023-06-04,2648024,2396442,1984658,441255,2669860 +2023-06-03,2221884,1992251,1681192,353016,2225952 +2023-06-02,2534724,2347283,1879885,419675,2649808 +2023-06-01,2463873,2228271,1815931,391882,2623947 +2023-05-31,2255052,2023231,1587910,304436,2370152 +2023-05-30,2342489,2114935,1682752,267742,2247421 +2023-05-29,2577437,2319237,1900170,353261,2499002 +2023-05-28,2257766,2103022,1650454,352947,2555578 +2023-05-27,2206575,2000335,1605810,268867,2117180 +2023-05-26,2744469,2397928,1959593,327133,2570613 +2023-05-25,2658057,2399579,1854534,321776,2485770 +2023-05-24,2429358,2165771,1618169,261170,2269035 +2023-05-23,2262673,2034843,1470840,264843,2453649 +2023-05-22,2562419,2339945,1747353,340769,2512237 +2023-05-21,2650573,2364240,1863697,267451,2070716 +2023-05-20,2213471,1999651,1550044,253190,2124825 +2023-05-19,2655587,2356404,1820433,348673,2792670 +2023-05-18,2627978,2366865,1728496,318449,2673635 +2023-05-17,2305668,2117010,1496089,230367,2472123 +2023-05-16,2168144,2042144,1408017,190477,2312727 +2023-05-15,2586566,2282944,1734541,244176,2615691 +2023-05-14,2484125,2399801,1850531,253807,2620276 +2023-05-13,2113445,1984654,1453267,193340,2091116 +2023-05-12,2524891,2358444,1716561,250467,2664549 +2023-05-11,2585633,2337876,1743515,234928,2611324 +2023-05-10,2248503,2030630,1424664,176667,2343675 +2023-05-09,2073603,1908906,1315493,163205,2191387 +2023-05-08,2468179,2244645,1657722,215645,2512315 +2023-05-07,2583350,2255547,1707805,200815,2419114 +2023-05-06,2043700,1884883,1429657,169580,1985942 +2023-05-05,2508503,2292080,1703267,215444,2602631 +2023-05-04,2498939,2240816,1644050,190863,2555342 +2023-05-03,2158446,1962832,1268938,140409,2270662 +2023-05-02,1992142,1827782,1134103,130601,2106597 +2023-05-01,2411749,2146993,1463672,163692,2470969 +2023-04-30,2505077,2279287,1626962,170254,2512598 +2023-04-29,1954022,1885701,1335535,134261,1968278 +2023-04-28,2503233,2286852,1558553,171563,2546029 +2023-04-27,2517253,2267171,1526681,154695,2499461 +2023-04-26,2178370,1999806,1184326,119629,2256442 +2023-04-25,2011519,1870392,1077199,110913,2102068 +2023-04-24,2417427,2189296,1369410,119854,2412770 +2023-04-23,2564762,2298561,1571220,128875,2506809 +2023-04-22,2056341,1915707,1259724,114459,1990464 +2023-04-21,2585925,2309474,1521393,123464,2521897 +2023-04-20,2510568,2288508,1509649,111627,2526961 +2023-04-19,2214841,2034403,1164099,98968,2254209 +2023-04-18,2065326,1988681,1082443,92859,2227475 +2023-04-17,2446947,2292729,1412500,99344,2594171 +2023-04-16,2575220,2214376,1572383,105382,2356802 +2023-04-15,2150251,1903886,1277815,97236,1988205 +2023-04-14,2532863,2315430,1468218,106385,2457133 +2023-04-13,2437708,2354474,1491435,95085,2616158 +2023-04-12,2150587,2053892,1152703,90784,2317381 +2023-04-11,2123254,1883285,1085034,87534,2208688 +2023-04-10,2511861,2188196,1468972,102184,2484580 +2023-04-09,2375705,2300909,1561495,90510,2446801 +2023-04-08,2093075,1959523,1378237,93645,2059142 +2023-04-07,2475368,2327849,1549181,108977,2590499 +2023-04-06,2508487,2227151,1510829,104090,2487398 +2023-04-05,2199464,1982006,1230939,94931,2229276 +2023-04-04,2066489,1850647,1195306,97130,2091056 +2023-04-03,2384806,2141153,1561959,108310,2384091 +2023-04-02,2528489,2206569,1543474,122029,2462929 +2023-04-01,2239314,1922516,1397958,118302,2011715 +2023-03-31,2521659,2287653,1580785,129763,2476884 +2023-03-30,2462648,2219675,1562239,124021,2411500 +2023-03-29,2206337,1887509,1278113,136023,2151626 +2023-03-28,2033766,1747597,1130520,146348,2026256 +2023-03-27,2374441,2141002,1406234,154080,2360053 +2023-03-26,2514762,2313481,1574228,180002,2510294 +2023-03-25,2208254,2022231,1408198,184027,2172920 +2023-03-24,2508182,2304825,1535156,199644,2538384 +2023-03-23,2441286,2255090,1444744,203858,2487162 +2023-03-22,2189372,1971979,1164954,239234,2273811 +2023-03-21,2026078,1859077,1076453,279018,2151913 +2023-03-20,2399550,2177240,1360290,331431,2434370 +2023-03-19,2592384,2379182,1543136,454516,2542643 +2023-03-18,2278790,2108715,1373259,548132,2227181 +2023-03-17,2517194,2319876,1477841,593167,2559307 +2023-03-16,2461141,2231375,1413141,620883,2513231 +2023-03-15,2260097,2000210,1146539,779631,2320885 +2023-03-14,2022912,1870647,1092548,953699,2177929 +2023-03-13,2390797,2203639,1267345,1257823,2465709 +2023-03-12,2527599,2293374,1345284,1519192,2545742 +2023-03-11,2279445,1998129,1227484,1485553,2274658 +2023-03-10,2562389,2299583,1409771,1714372,2634215 +2023-03-09,2397930,2185904,1286894,1788456,2503924 +2023-03-08,2125163,1851191,974221,1702686,2187298 +2023-03-07,1907186,1657723,825745,1617220,2122898 +2023-03-06,2197079,2019553,1119303,1909363,2378673 +2023-03-05,2412281,2184096,1278557,2119867,2485430 +2023-03-04,2040542,1831741,992406,1844811,2156262 +2023-03-03,2375612,2139036,1168734,2198517,2543689 +2023-03-02,2299188,2053525,1107534,2130015,2402692 +2023-03-01,2062287,1740923,826924,1877401,2143619 +2023-02-28,1876825,1638699,744812,1736393,1979558 +2023-02-27,2230481,1984773,1049692,2089641,2257920 +2023-02-26,2394788,2150118,1190682,2353150,2307393 +2023-02-25,2047075,1842536,917282,1949696,2015079 +2023-02-24,2413692,2104233,1096348,2441643,1861286 +2023-02-23,2317943,1988432,1051149,2364727,2160322 +2023-02-22,1998636,1755527,802230,2075554,2197938 +2023-02-21,2046424,1785417,714725,1919803,2274217 +2023-02-20,2466587,2222002,963280,2267382,2331841 +2023-02-19,2314101,2068827,1115479,2380359,2415570 +2023-02-18,2053266,1826833,942238,1951535,2351856 +2023-02-17,2504187,2244042,1059452,2429489,2022861 +2023-02-16,2327313,1986581,914823,2358511,2177690 +2023-02-15,2006022,1670550,773422,2129862,2476445 +2023-02-14,1670451,1541222,738825,2190300,2147045 +2023-02-13,2066634,1737532,967693,2494922,1922613 +2023-02-12,2113656,1821279,946458,2198657,2227730 +2023-02-11,1809088,1538874,900696,1972248,1950385 +2023-02-10,2254803,1918436,1151420,2507588,1620239 +2023-02-09,2152183,1786323,1034514,2415185,2055827 +2023-02-08,1793794,1390835,735009,2038375,2105696 +2023-02-07,1622865,1239137,617619,1814047,1648328 +2023-02-06,2033636,1592651,864783,2164951,2134744 +2023-02-05,2195570,1786681,854636,2224826,2064640 +2023-02-04,1669778,1399603,705951,1770241,1756152 +2023-02-03,2102998,1583678,868624,2271551,1655868 +2023-02-02,2035923,1342502,778065,2167857,2001482 +2023-02-01,1604546,1196728,618615,1843877,1792677 +2023-01-31,1531806,1203689,493338,1677798,1591591 +2023-01-30,1932014,1539356,628989,2054725,2078169 +2023-01-29,2137929,1716055,859039,1948138,1938817 +2023-01-28,1649696,1070815,617489,1658886,1593697 +2023-01-27,2115222,1634225,774688,2159047,1534386 +2023-01-26,2089208,1560893,750558,2085468,1862420 +2023-01-25,1671867,1200998,536935,1777171,2010374 +2023-01-24,1559251,1063856,468933,1643435,1571077 +2023-01-23,1965789,1399342,701709,2004609,2052814 +2023-01-22,2135304,1649090,838116,2136584,1991328 +2023-01-21,1656540,1246901,603527,1645196,1763884 +2023-01-20,2083953,1514895,755028,2145063,1804629 +2023-01-19,1993765,1470973,728978,2100401,2179066 +2023-01-18,1667112,1201768,542338,1801444,1776235 +2023-01-17,1788696,1301256,560190,1870459,1600698 +2023-01-16,2115696,1704328,878048,2298616,2271398 +2023-01-15,2032496,1438492,810654,2000260,2139242 +2023-01-14,1796768,1421612,690438,1781893,1786012 +2023-01-13,2299159,1741376,903039,2347075,1605758 +2023-01-12,2182659,1543648,803688,2242656,1886642 +2023-01-11,1709703,1234827,567401,1876782,1970450 +2023-01-10,1671507,1129725,520117,1691205,1604862 +2023-01-09,2008182,1453110,708177,1992453,1959788 +2023-01-08,2214608,1706857,886536,2183734,1955200 +2023-01-07,1906785,1450135,709444,1687974,1739642 +2023-01-06,2030131,1518098,772471,2072543,1733739 +2023-01-05,2025074,1543985,771734,2034472,2044043 +2023-01-04,1981522,1501170,665855,1815040,2229391 +2023-01-03,2203005,1673499,766594,1806480,1975947 +2023-01-02,2361734,1921966,1080346,2210542,2150571 +2023-01-01,2031163,2026176,1327289,2422272,2202111