CINXE.COM
Figure Friday 2024 - week 41 - Dash Python - Plotly Community Forum
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Figure Friday 2024 - week 41 - Dash Python - Plotly Community Forum</title> <meta name="description" content="Did you know that the New York City subway system is 850 miles (1,370 km) long and that the record daily ridership was over 6.2 million people on October 29, 2015? “The daily ridership dataset provides system-wide rider&hellip;"> <meta name="generator" content="Discourse 3.4.0.beta3-dev - https://github.com/discourse/discourse version 5bf5d1335680f28a8eb65c488353be9585eed08e"> <link rel="icon" type="image/png" href="https://global.discourse-cdn.com/flex020/uploads/plot/optimized/3X/4/d/4dad2bfe3c0428d932d3f58ebd2bafcfd94a60cd_2_32x32.svg"> <link rel="apple-touch-icon" type="image/png" href="https://global.discourse-cdn.com/flex020/uploads/plot/optimized/3X/d/6/d6d946d2566c8b2e332e5055af69eb7b46655cd5_2_180x180.png"> <meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff"> <meta name="theme-color" media="(prefers-color-scheme: dark)" content="#111111"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, user-scalable=yes, viewport-fit=cover"> <link rel="canonical" href="https://community.plotly.com/t/figure-friday-2024-week-41/87878" /> <link rel="search" type="application/opensearchdescription+xml" href="https://community.plotly.com/opensearch.xml" title="Plotly Community Forum Search"> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/color_definitions_plotly-light_10_4_ed51aabd2824c3f8f779fda1ebf4b2ebee9613fc.css?__ws=community.plotly.com" media="all" rel="stylesheet" class="light-scheme"/><link href="https://sea2.discourse-cdn.com/flex020/stylesheets/color_definitions_dark_14_4_e29a032d68ec3156f229eaab4e6ad886f2cc1397.css?__ws=community.plotly.com" media="(prefers-color-scheme: dark)" rel="stylesheet" class="dark-scheme"/> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/desktop_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="desktop" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/automation_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="automation" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/chat_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="chat" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/checklist_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="checklist" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/discourse-adplugin_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="discourse-adplugin" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/discourse-ai_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="discourse-ai" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/discourse-akismet_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="discourse-akismet" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/discourse-cakeday_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="discourse-cakeday" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/discourse-data-explorer_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="discourse-data-explorer" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/discourse-details_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="discourse-details" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/discourse-lazy-videos_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="discourse-lazy-videos" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/discourse-local-dates_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="discourse-local-dates" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/discourse-math_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="discourse-math" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/discourse-narrative-bot_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="discourse-narrative-bot" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/discourse-policy_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="discourse-policy" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/discourse-presence_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="discourse-presence" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/discourse-reactions_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="discourse-reactions" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/discourse-solved_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="discourse-solved" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/discourse-templates_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="discourse-templates" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/discourse-topic-voting_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="discourse-topic-voting" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/footnote_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="footnote" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/hosted-site_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="hosted-site" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/poll_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="poll" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/spoiler-alert_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="spoiler-alert" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/chat_desktop_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="chat_desktop" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/discourse-ai_desktop_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="discourse-ai_desktop" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/discourse-reactions_desktop_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="discourse-reactions_desktop" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/discourse-topic-voting_desktop_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="discourse-topic-voting_desktop" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/poll_desktop_47dec152524498242f46f43a1c47a275d2f970f9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="poll_desktop" /> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/desktop_theme_5_f927249a7c02a50c3223b11919ccb9ea3b39ce2a.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="5" data-theme-name="custom header links"/> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/desktop_theme_7_4925797c764adbd5dd8363a285745c3051d0a4a9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="7" data-theme-name="discourse-tag-sidebars"/> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/desktop_theme_2_630fdc021cb0c5a1589bca4d6d38dae9b0029bdb.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="2" data-theme-name="base style"/> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/desktop_theme_3_361d96c2f8504ddf8b8322d2556d0217786ba1a9.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="3" data-theme-name="header links"/> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/desktop_theme_6_744e2a3cace5055fb7c4204d46ce8f3be8e28234.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="6" data-theme-name="house ads"/> <link href="https://sea2.discourse-cdn.com/flex020/stylesheets/desktop_theme_4_0e51ac85ae7cfd25d72cfded9a179481b9897600.css?__ws=community.plotly.com" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="4" data-theme-name="plotly light"/> <script defer="" src="https://sea2.discourse-cdn.com/flex020/theme-javascripts/e0be0f227c4f7f52cdffda4c89899b164037dc16.js?__ws=community.plotly.com" data-theme-id="4" nonce="fDyiSNn0kvxHsml5Di8WWwkb0"></script> <!-- Global site tag (gtag.js) - AdWords: 1009791370 --> <script async="" src="https://www.googletagmanager.com/gtag/js?id=AW-1009791370" nonce="fDyiSNn0kvxHsml5Di8WWwkb0"></script> <script defer="" src="https://sea2.discourse-cdn.com/flex020/theme-javascripts/0c2e38f62f793a5051d0d14872c9bf34469a6aa3.js?__ws=community.plotly.com" data-theme-id="3" nonce="fDyiSNn0kvxHsml5Di8WWwkb0"></script> <script defer="" src="https://sea2.discourse-cdn.com/flex020/theme-javascripts/d94ac2bc7117e2106ded661606dbd9691e2ffe88.js?__ws=community.plotly.com" data-theme-id="8" nonce="fDyiSNn0kvxHsml5Di8WWwkb0"></script> <link rel="alternate nofollow" type="application/rss+xml" title="RSS feed of 'Figure Friday 2024 - week 41'" href="https://community.plotly.com/t/figure-friday-2024-week-41/87878.rss" /> <meta property="og:site_name" content="Plotly Community Forum" /> <meta property="og:type" content="website" /> <meta name="twitter:card" content="summary" /> <meta name="twitter:image" content="https://global.discourse-cdn.com/flex020/uploads/plot/optimized/3X/e/d/edcdadfb22f5932fbef8dcca2da2a7a9d25b4404_2_1024x481.png" /> <meta property="og:image" content="https://global.discourse-cdn.com/flex020/uploads/plot/optimized/3X/e/d/edcdadfb22f5932fbef8dcca2da2a7a9d25b4404_2_1024x481.png" /> <meta property="og:url" content="https://community.plotly.com/t/figure-friday-2024-week-41/87878" /> <meta name="twitter:url" content="https://community.plotly.com/t/figure-friday-2024-week-41/87878" /> <meta property="og:title" content="Figure Friday 2024 - week 41" /> <meta name="twitter:title" content="Figure Friday 2024 - week 41" /> <meta property="og:description" content="Did you know that the New York City subway system is 850 miles (1,370 km) long and that the record daily ridership was over 6.2 million people on October 29, 2015? “The daily ridership dataset provides system-wide ridership and traffic estimates for subways (including the Staten Island Railway), buses, Long Island Rail Road, Metro-North Railroad, Access-A-Ride, and Bridges and Tunnels, beginning 3/1/2020. It also provides a percentage comparison against a comparable pre-pandemic date.” (Data.N..." /> <meta name="twitter:description" content="Did you know that the New York City subway system is 850 miles (1,370 km) long and that the record daily ridership was over 6.2 million people on October 29, 2015? “The daily ridership dataset provides system-wide ridership and traffic estimates for subways (including the Staten Island Railway), buses, Long Island Rail Road, Metro-North Railroad, Access-A-Ride, and Bridges and Tunnels, beginning 3/1/2020. It also provides a percentage comparison against a comparable pre-pandemic date.” (Data.N..." /> <meta property="og:article:section" content="Dash Python" /> <meta property="og:article:section:color" content="0E76BD" /> <meta property="og:article:tag" content="figure-friday" /> <meta name="twitter:label1" value="Reading time" /> <meta name="twitter:data1" value="3 mins 🕑" /> <meta name="twitter:label2" value="Likes" /> <meta name="twitter:data2" value="5 ❤" /> <meta property="article:published_time" content="2024-10-11T13:42:45+00:00" /> <meta property="og:ignore_canonical" content="true" /> <script type="application/ld+json">{"@context":"http://schema.org","@type":"QAPage","name":"Figure Friday 2024 - week 41","mainEntity":{"@type":"Question","name":"Figure Friday 2024 - week 41","text":"Did you know that the New York City subway system is 850 miles (1,370 km) long and that the record daily ridership was over 6.2 million people on October 29, 2015?\n\n“The <a href=\"https://github.com/plotly/Figure-Friday/tree/main/2024/week-41\">daily ridership dataset<\/a> provides system-wide ridership and traffic estimates for subways (including the Staten Island Railway), bu…","upvoteCount":1,"answerCount":0,"datePublished":"2024-10-11T13:42:45.513Z","author":{"@type":"Person","name":"adamschroeder","url":"https://community.plotly.com/u/adamschroeder"}}}</script> </head> <body class="crawler browser-update"> <div id="custom-banner-webinar"> ✨ Practice building amazing Plotly Dash apps: <a href="https://community.plotly.com/t/holiday-season-app-challenge-nyc-mta/88389" target="_blank">Join the app-building challenge!</a> </div> <script defer="" src="https://sea2.discourse-cdn.com/flex020/theme-javascripts/b891fd37ba759b491111807dba3f7eb4fc402381.js?__ws=community.plotly.com" data-theme-id="7" nonce="fDyiSNn0kvxHsml5Di8WWwkb0"></script> <header> <a href="/"> Plotly Community Forum </a> </header> <div id="main-outlet" class="wrap" role="main"> <div id="topic-title"> <h1> <a href="/t/figure-friday-2024-week-41/87878">Figure Friday 2024 - week 41</a> </h1> <div class="topic-category" itemscope itemtype="http://schema.org/BreadcrumbList"> <span itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"> <a href="/c/python/25" class="badge-wrapper bullet" itemprop="item"> <span class='badge-category-bg' style='background-color: #0E76BD'></span> <span class='badge-category clear-badge'> <span class='category-name' itemprop='name'>Dash Python</span> </span> </a> <meta itemprop="position" content="1" /> </span> </div> <div class="topic-category"> <div class='discourse-tags list-tags'> <a href='https://community.plotly.com/tag/figure-friday' class='discourse-tag' rel="tag">figure-friday</a> </div> </div> </div> <div itemscope itemtype='http://schema.org/DiscussionForumPosting'> <meta itemprop='headline' content='Figure Friday 2024 - week 41'> <link itemprop='url' href='https://community.plotly.com/t/figure-friday-2024-week-41/87878'> <meta itemprop='datePublished' content='2024-10-11T13:42:45Z'> <meta itemprop='articleSection' content='Dash Python'> <meta itemprop='keywords' content='figure-friday'> <div itemprop='publisher' itemscope itemtype="http://schema.org/Organization"> <meta itemprop='name' content='Plotly'> <div itemprop='logo' itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop='url' content='https://global.discourse-cdn.com/flex020/uploads/plot/original/3X/f/3/f3da33405ee7e693abfd12bd4ae334a55e8345d0.png'> </div> </div> <div id='post_1' class='topic-body crawler-post'> <div class='crawler-post-meta'> <span class="creator" itemprop="author" itemscope itemtype="http://schema.org/Person"> <a itemprop="url" href='https://community.plotly.com/u/adamschroeder'><span itemprop='name'>adamschroeder</span></a> </span> <link itemprop="mainEntityOfPage" href="https://community.plotly.com/t/figure-friday-2024-week-41/87878"> <link itemprop="image" href="https://global.discourse-cdn.com/flex020/uploads/plot/original/3X/e/d/edcdadfb22f5932fbef8dcca2da2a7a9d25b4404.png"> <span class="crawler-post-infos"> <time datetime='2024-10-11T13:42:45Z' class='post-time'> October 11, 2024, 1:42pm </time> <meta itemprop='dateModified' content='2024-10-18T14:50:49Z'> <span itemprop='position'>1</span> </span> </div> <div class='post' itemprop='text'> <p>Did you know that the New York City subway system is 850 miles (1,370 km) long and that the record daily ridership was over 6.2 million people on October 29, 2015?</p> <p>“The <a href="https://github.com/plotly/Figure-Friday/tree/main/2024/week-41">daily ridership dataset</a> provides system-wide ridership and traffic estimates for subways (including the Staten Island Railway), buses, Long Island Rail Road, Metro-North Railroad, Access-A-Ride, and Bridges and Tunnels, beginning 3/1/2020. It also provides a percentage comparison against a comparable pre-pandemic date.” (<a href="https://data.ny.gov/Transportation/MTA-Daily-Ridership-Data-Beginning-2020/vxuj-8kew/about_data">Data.NY.GOV</a>)</p> <h2><a name="p-184066-things-to-consider-1" class="anchor" href="#p-184066-things-to-consider-1"></a>Things to consider:</h2> <ul> <li>can you improve the sample figure built?</li> <li>would a different figure tell the data story better?</li> <li>can you create a Dash app instead?</li> <li>can you refresh the data daily through the <a href="https://dev.socrata.com/foundry/data.ny.gov/vxuj-8kew">NY State API</a>?</li> </ul> <p>Sample figure:<br> <div class="lightbox-wrapper"><a class="lightbox" href="https://global.discourse-cdn.com/flex020/uploads/plot/original/3X/e/d/edcdadfb22f5932fbef8dcca2da2a7a9d25b4404.png" data-download-href="/uploads/short-url/xVHPh7JpPcVSGXObc4rw5YL8m9e.png?dl=1" title="image"><img src="https://global.discourse-cdn.com/flex020/uploads/plot/optimized/3X/e/d/edcdadfb22f5932fbef8dcca2da2a7a9d25b4404_2_690x324.png" alt="image" data-base62-sha1="xVHPh7JpPcVSGXObc4rw5YL8m9e" width="690" height="324" srcset="https://global.discourse-cdn.com/flex020/uploads/plot/optimized/3X/e/d/edcdadfb22f5932fbef8dcca2da2a7a9d25b4404_2_690x324.png, https://global.discourse-cdn.com/flex020/uploads/plot/optimized/3X/e/d/edcdadfb22f5932fbef8dcca2da2a7a9d25b4404_2_1035x486.png 1.5x, https://global.discourse-cdn.com/flex020/uploads/plot/optimized/3X/e/d/edcdadfb22f5932fbef8dcca2da2a7a9d25b4404_2_1380x648.png 2x" data-dominant-color="D7E6E3"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">image</span><span class="informations">1901×893 60.1 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div></p> <details> <summary> Code for sample figure:</summary> <pre><code class="lang-auto">import plotly.express as px import pandas as pd df = pd.read_csv("https://raw.githubusercontent.com/plotly/Figure-Friday/refs/heads/main/2024/week-41/MTA_Daily_Ridership_Data__Beginning_2020_20241009.csv") fig = px.bar(df, x="Date", y="Subways: Total Estimated Ridership", title="NYC Subway Rides") fig.update_traces(marker_color="green") fig.add_vline(x="03/11/2020", line_width=3, line_dash="dash", line_color="blue") fig.add_annotation(x="03/11/2020", y=4100000, text="<--- World Health Organization declares a global COVID-19 pandemic.", showarrow=False, xshift=240) fig.show() </code></pre> </details> <h1><a name="p-184066-participation-instructions-2" class="anchor" href="#p-184066-participation-instructions-2"></a>Participation Instructions:</h1> <ul> <li><strong>Create</strong> - use the weekly data set to build your own Plotly visualization or Dash app. Or, enhance the sample figure provided in this post, using Plotly or Dash.</li> <li><strong>Submit</strong> - post your creation to LinkedIn or Twitter with the hashtags <code>#FigureFriday</code> and <code>#plotly</code> by midnight Thursday, your time zone. Please also submit your visualization as a new post in this thread.</li> <li><strong>Celebrate</strong> - join the <a href="https://us06web.zoom.us/meeting/register/tZIuceqhqT4iHNS1T-23AWqtxmFKaCRlwTUq">Figure Friday sessions </a> to showcase your creation and receive feedback from the community.</li> </ul> <p><img src="https://emoji.discourse-cdn.com/twitter/point_right.png?v=12" title=":point_right:" class="emoji" alt=":point_right:" loading="lazy" width="20" height="20"> If you prefer to collaborate with others on Discord, join the <a href="https://discord.gg/Pa8scsgepB">Plotly Discord channel </a>.</p> <p>Thank you to <a href="https://data.ny.gov/Transportation/MTA-Daily-Ridership-Data-Beginning-2020/vxuj-8kew/about_data">New York State Open Data</a> for the data.</p> </div> <div itemprop="interactionStatistic" itemscope itemtype="http://schema.org/InteractionCounter"> <meta itemprop="interactionType" content="http://schema.org/LikeAction"/> <meta itemprop="userInteractionCount" content="1" /> <span class='post-likes'>1 Like</span> </div> </div> <div id='post_3' itemprop='comment' itemscope itemtype='http://schema.org/Comment' class='topic-body crawler-post'> <div class='crawler-post-meta'> <span class="creator" itemprop="author" itemscope itemtype="http://schema.org/Person"> <a itemprop="url" href='https://community.plotly.com/u/Mike_Purtell'><span itemprop='name'>Mike_Purtell</span></a> </span> <link itemprop="image" href="https://global.discourse-cdn.com/flex020/uploads/plot/original/3X/c/6/c64ea4bcd82529a7033a4cf63136cfb7917a5db5.png"> <span class="crawler-post-infos"> <time itemprop='datePublished' datetime='2024-10-15T15:09:38Z' class='post-time'> October 15, 2024, 3:09pm </time> <meta itemprop='dateModified' content='2024-10-17T14:35:04Z'> <span itemprop='position'>3</span> </span> </div> <div class='post' itemprop='text'> <p><strong>Thurs Oct 17:</strong><br> I have added a third visualization to show the average number of riders by day of week and by year. I used an interquartile outlier removal algorithm to drop extreme values, like 2020 before the pandemic and some of the large spikes that would affect the mean calculations. Replaced the code and the screenshots.</p> <hr> <p>Here is a deep dive look into New York City subway ridership levels relative to pre-pandemic. I made one visualization of the raw data, and a one that used a polars rolling_mean of 7 to smooth over weekday variations. Here are the screen shots, with code posted below.</p> <p><div class="lightbox-wrapper"><a class="lightbox" href="https://global.discourse-cdn.com/flex020/uploads/plot/original/3X/c/6/c64ea4bcd82529a7033a4cf63136cfb7917a5db5.png" data-download-href="/uploads/short-url/sij1ZkEAICQsdO9cnqvnbPGgIct.png?dl=1" title="image" rel="noopener nofollow ugc"><img src="https://global.discourse-cdn.com/flex020/uploads/plot/optimized/3X/c/6/c64ea4bcd82529a7033a4cf63136cfb7917a5db5_2_690x430.png" alt="image" data-base62-sha1="sij1ZkEAICQsdO9cnqvnbPGgIct" width="690" height="430" srcset="https://global.discourse-cdn.com/flex020/uploads/plot/optimized/3X/c/6/c64ea4bcd82529a7033a4cf63136cfb7917a5db5_2_690x430.png, https://global.discourse-cdn.com/flex020/uploads/plot/original/3X/c/6/c64ea4bcd82529a7033a4cf63136cfb7917a5db5.png 1.5x, https://global.discourse-cdn.com/flex020/uploads/plot/original/3X/c/6/c64ea4bcd82529a7033a4cf63136cfb7917a5db5.png 2x" data-dominant-color="F8F8F8"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">image</span><span class="informations">846×528 83.5 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div><br> <div class="lightbox-wrapper"><a class="lightbox" href="https://global.discourse-cdn.com/flex020/uploads/plot/original/3X/9/4/9404e64758c8abdb23a5a77cc7c8d46c70b7eaff.jpeg" data-download-href="/uploads/short-url/l7ra5QRuzvQbOvLzQvkolnAXurR.jpeg?dl=1" title="image" rel="noopener nofollow ugc"><img src="https://global.discourse-cdn.com/flex020/uploads/plot/optimized/3X/9/4/9404e64758c8abdb23a5a77cc7c8d46c70b7eaff_2_690x431.jpeg" alt="image" data-base62-sha1="l7ra5QRuzvQbOvLzQvkolnAXurR" width="690" height="431" srcset="https://global.discourse-cdn.com/flex020/uploads/plot/optimized/3X/9/4/9404e64758c8abdb23a5a77cc7c8d46c70b7eaff_2_690x431.jpeg, https://global.discourse-cdn.com/flex020/uploads/plot/original/3X/9/4/9404e64758c8abdb23a5a77cc7c8d46c70b7eaff.jpeg 1.5x, https://global.discourse-cdn.com/flex020/uploads/plot/original/3X/9/4/9404e64758c8abdb23a5a77cc7c8d46c70b7eaff.jpeg 2x" data-dominant-color="EEEBE7"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">image</span><span class="informations">842×527 142 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div><br> <div class="lightbox-wrapper"><a class="lightbox" href="https://global.discourse-cdn.com/flex020/uploads/plot/original/3X/3/1/31bf7d881557b8389ec2bc580d5b65daa0feec0d.png" data-download-href="/uploads/short-url/765F3H1vWvqGrnnL9WTBJejUmhD.png?dl=1" title="image" rel="noopener nofollow ugc"><img src="https://global.discourse-cdn.com/flex020/uploads/plot/optimized/3X/3/1/31bf7d881557b8389ec2bc580d5b65daa0feec0d_2_690x436.png" alt="image" data-base62-sha1="765F3H1vWvqGrnnL9WTBJejUmhD" width="690" height="436" srcset="https://global.discourse-cdn.com/flex020/uploads/plot/optimized/3X/3/1/31bf7d881557b8389ec2bc580d5b65daa0feec0d_2_690x436.png, https://global.discourse-cdn.com/flex020/uploads/plot/original/3X/3/1/31bf7d881557b8389ec2bc580d5b65daa0feec0d.png 1.5x, https://global.discourse-cdn.com/flex020/uploads/plot/original/3X/3/1/31bf7d881557b8389ec2bc580d5b65daa0feec0d.png 2x" data-dominant-color="F5F5F6"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">image</span><span class="informations">835×528 114 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div></p> <pre><code class="lang-auto">import polars as pl import plotly.express as px import polars.selectors as cs def plot_by_year( df, rolling_mean=0, title='no title given', annotate_text = 'NONE', annotate_x=0, annotate_y=0, ): ''' Function to make px.line by year with custom annotation''' if rolling_mean: df = ( df .select( pl.col('DATE', '2020','2021', '2022', '2023', '2024') ) .with_columns( pl.col(['2020','2021', '2022', '2023', '2024']) .rolling_mean(window_size=7) ) ) fig=px.line( ( df .select( pl.col('DATE', '2020','2021', '2022', '2023', '2024') ) ), 'DATE', ['2024','2023', '2022', '2021', '2020'], template='simple_white', height=600, width=900 ) fig.update_layout( title=title, yaxis_tickformat='.0%', legend_title_text='YEAR', yaxis_range = [0, 1.5], ) fig.update_xaxes(title='') fig.update_yaxes(title='RIDERSHIP % RELATIVE TO PRE-PANDEMIC') fig.update_traces(hovertemplate=None) fig.update_layout(hovermode="x unified") # add annotation if x or y value are non-zero, otherwise skip if (annotate_x + annotate_y > 0.0): fig.add_annotation( x=annotate_x, xref='paper', y=annotate_y, yref='paper', text=annotate_text, showarrow=True, xanchor='left', yanchor='top', align='left', font=dict(size=14) ) fig.update_annotations(showarrow=False) return fig df_all = ( pl.scan_csv('MTA_Daily_Ridership_Data__Beginning_2020.csv', ) .with_columns( DATE = pl.col('Date').str.to_datetime('%m/%d/%Y') ) .with_columns(MONTH_NUM = pl.col('DATE').dt.strftime('%m').cast(pl.UInt8)) .with_columns(MONTH_NAME = pl.col('DATE').dt.strftime('%b')) .with_columns(DAY = pl.col('DATE').dt.strftime('%d').cast(pl.UInt8)) .with_columns(YEAR = pl.col('DATE').dt.strftime('%Y').cast(pl.UInt16)) .with_columns(DAY_NAME = pl.col('DATE').dt.strftime('%a')) .rename( { 'Subways: Total Estimated Ridership' : 'SUB_RIDERS', 'Subways: % of Comparable Pre-Pandemic Day' : 'SUB_PCT', 'Buses: Total Estimated Ridership' : 'BUS_RIDERS', 'Buses: % of Comparable Pre-Pandemic Day' : 'BUS_PCT', 'Metro-North: Total Estimated Ridership' : 'METRO_N_RIDERS', 'Metro-North: % of Comparable Pre-Pandemic Day' : 'METRO_N_PCT', 'LIRR: Total Estimated Ridership' : 'LIRR_RIDERS', 'LIRR: % of Comparable Pre-Pandemic Day' : 'LIRR_PCT', 'Access-A-Ride: Total Scheduled Trips' : 'ACCESS_RIDERS', 'Access-A-Ride: % of Comparable Pre-Pandemic Day' : 'ACCESS_PCT', 'Bridges and Tunnels: Total Traffic' : 'BT_TRAFFIC', 'Bridges and Tunnels: % of Comparable Pre-Pandemic Day' : 'BT_PCT', 'Staten Island Railway: Total Estimated Ridership' : 'SI_RW_RIDERS', 'Staten Island Railway: % of Comparable Pre-Pandemic Day' : 'SI_RW_PCT', } ) .with_columns(cs.ends_with('_PCT').cast(pl.Float32)/100) .select( pl.col( 'DATE', 'MONTH_NUM', 'MONTH_NAME', 'DAY', 'DAY_NAME', 'YEAR', 'SUB_RIDERS', 'SUB_PCT', 'BUS_RIDERS', 'BUS_PCT', 'LIRR_RIDERS', 'LIRR_PCT', 'METRO_N_RIDERS', 'METRO_N_PCT', 'ACCESS_RIDERS', 'ACCESS_PCT', 'BT_TRAFFIC', 'BT_PCT', 'SI_RW_RIDERS', 'SI_RW_PCT' ) ) .collect() ) df_subway = ( df_all .select(pl.col('DATE','MONTH_NUM', 'MONTH_NAME', 'DAY', 'DAY_NAME', 'YEAR', 'SUB_RIDERS', 'SUB_PCT')) .pivot( on='YEAR', index=['MONTH_NUM', 'MONTH_NAME','DAY'], values='SUB_PCT' ) .with_columns(DATE = pl.col('MONTH_NAME') + pl.lit(' ') + pl.col('DAY').cast(pl.String)) .sort('MONTH_NUM', 'DAY') ) # # Plot Subway ridership by year, relative to pre-pandemic using raw data, # without smoothing # ann_txt = 'Raw data shows weekday & weekend patterns,<BR>' ann_txt += "with notable peaks on Martin Luther King Day (Jan 20),<br>" ann_txt += "Presidents Day (Feb 20), and the biggest by far on Veteran's Day (Nov 11)" fig = plot_by_year( df_subway, rolling_mean = 0, title='SUBWAY RIDERSHIP, RELATIVE TO PRE-PANDEMIC', annotate_text = ann_txt, annotate_x=0.05, annotate_y=0.98 ) fig.write_html('Subway_PCT_Pre_Pandemic.html') fig.show() # # Plot Subway ridership by year, relative to pre-pandemic. # Use rolling mean of 7-days for smoothing # ann_txt = 'Rolling mean of 7 minimizes variation by weekday, and stretches the 1-day holiday peaks,<BR>' ann_txt += 'across 7 days. Ridership increases from 2020 to 2023 appear to be leveling off.<br><br>' ann_txt += '<span style="color: MediumBlue"><b>Going forward, does it make sense to put more focus on year-over-year trends,<br>' ann_txt += 'with less focus on pre-pandemic comparisons?</b></span>' fig = plot_by_year( df_subway, rolling_mean = 7, title='SUBWAY RIDERSHIP, RELATIVE TO PRE-PANDEMIC, ROLLING MEAN =7', annotate_text = ann_txt, annotate_x=0.05, annotate_y=0.98 ) fig.write_html('Subway_PCT_Pre_Pandemic_7_Day_Rolling.html') fig.show() # # Make a simple dataframe to may day number to day name, used in later join # df_day_num = ( pl.DataFrame( { 'DAY_NAME': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], 'DAY_NUM' : [i for i in range(1,8,1)] } ) ) df_day_num # # Make dataframe to show ridership levels by day of week. Use interquartile method # to identify outliers, and then remove them # df_subway_day = ( df_all .select(pl.col('MONTH_NUM', 'MONTH_NAME', 'DAY', 'DAY_NAME', 'YEAR', 'SUB_RIDERS', 'SUB_PCT')) .join( df_day_num, on = 'DAY_NAME', how='right' ) .with_columns( Q1= pl.col('SUB_RIDERS').quantile(0.25).over(['YEAR', 'DAY_NAME']), Q3= pl.col('SUB_RIDERS').quantile(0.75).over(['YEAR', 'DAY_NAME']), ) .with_columns( IQR= (pl.col('Q3')-pl.col('Q1')), ) .with_columns( OUTLIER_L = pl.col('Q1') - (1.5 * pl.col('IQR')), OUTLIER_H = pl.col('Q3') + (1.5 * pl.col('IQR')), ) .with_columns( IS_OUTLIER = ( (pl.col('SUB_RIDERS') > pl.col('OUTLIER_H')) | (pl.col('SUB_RIDERS') < pl.col('OUTLIER_L')) ).cast(pl.Boolean) ) .filter(pl.col('IS_OUTLIER') == False) .sort('YEAR', 'MONTH_NUM', 'DAY') .group_by(['YEAR', 'DAY_NAME', 'DAY_NUM']) .agg(pl.col('SUB_RIDERS').mean()) .pivot( on='YEAR', index=['DAY_NAME', 'DAY_NUM'], values='SUB_RIDERS' ) .sort('DAY_NUM') .select(pl.col('DAY_NAME', 'DAY_NUM','2024', '2023','2022', '2021','2020')) .with_columns(((pl.col('2020', '2021','2022', '2023','2024')/1000000)).cast(pl.Float32)) ) # # Plot ridership levels by day of week # fig=px.scatter( df_subway_day, 'DAY_NAME', df_subway_day.columns[2:], template='simple_white', height=600, width=900, ) fig.update_layout( title='AVERAGE SUBWAY RIDERSHIP BY DAY OF WEEK<br><sup>OUTLIERS EXCLUDED</sup>', # yaxis_tickformat='.0%', legend_title_text='YEAR', yaxis_range = [0, 5], ) fig.update_xaxes(title='') fig.update_yaxes(title='AVERAGE RIDERSHIP [Million]') fig.update_traces( mode = 'lines+markers', hovertemplate=None) fig.update_layout(hovermode="x unified") ann_txt = 'Fewer subway riders on weekends, not surprising.<BR>' ann_txt += 'Monday through Friday rider counts were flatter during early years of the pandemic,<br>' ann_txt += 'noticable Monday & Friday drop-off in recent years.<br>' ann_txt += '<span style="color: MediumBlue"><b>When did the Figure Friday program start?<br>' #ann_txt += '<span style="color: MediumBlue"><b>Going forward, does it make sense to put more focus on year-over-year trends,<br>' #ann_txt += 'with less focus on pre-pandemic comparisons?</b></span>' fig.add_annotation( x=0.05, xref='paper', y=0.98, yref='paper', text=ann_txt, showarrow=True, xanchor='left', yanchor='top', align='left', font=dict(size=14) ) fig.update_traces(hovertemplate="%{y:.2f} M") fig.update_annotations(showarrow=False) fig.write_html('Subway_Weekday_Patterns.html') fig.show() </code></pre> </div> <div itemprop="interactionStatistic" itemscope itemtype="http://schema.org/InteractionCounter"> <meta itemprop="interactionType" content="http://schema.org/LikeAction"/> <meta itemprop="userInteractionCount" content="1" /> <span class='post-likes'>1 Like</span> </div> </div> <div id='post_4' itemprop='comment' itemscope itemtype='http://schema.org/Comment' class='topic-body crawler-post'> <div class='crawler-post-meta'> <span class="creator" itemprop="author" itemscope itemtype="http://schema.org/Person"> <a itemprop="url" href='https://community.plotly.com/u/adamschroeder'><span itemprop='name'>adamschroeder</span></a> </span> <span class="crawler-post-infos"> <time itemprop='datePublished' datetime='2024-10-15T16:53:45Z' class='post-time'> October 15, 2024, 4:53pm </time> <meta itemprop='dateModified' content='2024-10-15T16:53:45Z'> <span itemprop='position'>4</span> </span> </div> <div class='post' itemprop='text'> <p>Thanks <a class="mention" href="/u/mike_purtell">@Mike_Purtell</a><br> It’s definitely easier to distinguish between the years/lines with the 7-day rolling average.</p> <p>With the weekday and weekend chart it’s clear that 2021 and beginning of 2022 was the recuperating time period. There is little difference between the years starting from March 2022.</p> <p>What about the red line that was cut, is that missing data?</p> </div> <div itemprop="interactionStatistic" itemscope itemtype="http://schema.org/InteractionCounter"> <meta itemprop="interactionType" content="http://schema.org/LikeAction"/> <meta itemprop="userInteractionCount" content="1" /> <span class='post-likes'>1 Like</span> </div> </div> <div id='post_5' itemprop='comment' itemscope itemtype='http://schema.org/Comment' class='topic-body crawler-post'> <div class='crawler-post-meta'> <span class="creator" itemprop="author" itemscope itemtype="http://schema.org/Person"> <a itemprop="url" href='https://community.plotly.com/u/Mike_Purtell'><span itemprop='name'>Mike_Purtell</span></a> </span> <span class="crawler-post-infos"> <time itemprop='datePublished' datetime='2024-10-15T18:20:42Z' class='post-time'> October 15, 2024, 6:20pm </time> <meta itemprop='dateModified' content='2024-10-15T18:20:42Z'> <span itemprop='position'>5</span> </span> </div> <div class='post' itemprop='text'> <p>Hi <a class="mention" href="/u/adamschroeder">@adamschroeder</a>, the missing data on the raw plots represent the leap year day of Feb 29, missing as expected in 2021-2023, present in 2024. For the rolling mean data, 1 missing value in the raw data gives 7 missing values with rolling mean. I was not aware that would happen and did not expect it but may be best to keep it this way instead of filling in missing values. Thank you.</p> </div> <div itemprop="interactionStatistic" itemscope itemtype="http://schema.org/InteractionCounter"> <meta itemprop="interactionType" content="http://schema.org/LikeAction"/> <meta itemprop="userInteractionCount" content="1" /> <span class='post-likes'>1 Like</span> </div> </div> <div id='post_6' itemprop='comment' itemscope itemtype='http://schema.org/Comment' class='topic-body crawler-post'> <div class='crawler-post-meta'> <span class="creator" itemprop="author" itemscope itemtype="http://schema.org/Person"> <a itemprop="url" href='https://community.plotly.com/u/Mike_Purtell'><span itemprop='name'>Mike_Purtell</span></a> </span> <span class="crawler-post-infos"> <time itemprop='datePublished' datetime='2024-10-15T21:33:02Z' class='post-time'> October 15, 2024, 9:33pm </time> <meta itemprop='dateModified' content='2024-10-15T21:33:02Z'> <span itemprop='position'>6</span> </span> </div> <div class='post' itemprop='text'> <p>I just looked up the polars API for rolling mean. Good news: rolling_mean has a parameter called min_periods that can reduce the gap in the rolling_mean plot. By default, min_periods is equal to rolling window size. This explains why there are 7 missing values. Bad news, the documentation says rolling_mean has unstable functionality and may be changed at any point without being considered a breaking change. As there is no suggested alternative, I would bet that rolling mean will eventually be stabilized, but who knows.</p> </div> <div itemprop="interactionStatistic" itemscope itemtype="http://schema.org/InteractionCounter"> <meta itemprop="interactionType" content="http://schema.org/LikeAction"/> <meta itemprop="userInteractionCount" content="0" /> <span class='post-likes'></span> </div> </div> <div id='post_7' itemprop='comment' itemscope itemtype='http://schema.org/Comment' class='topic-body crawler-post'> <div class='crawler-post-meta'> <span class="creator" itemprop="author" itemscope itemtype="http://schema.org/Person"> <a itemprop="url" href='https://community.plotly.com/u/adamschroeder'><span itemprop='name'>adamschroeder</span></a> </span> <span class="crawler-post-infos"> <time itemprop='datePublished' datetime='2024-10-16T13:33:35Z' class='post-time'> October 16, 2024, 1:33pm </time> <meta itemprop='dateModified' content='2024-10-16T13:33:35Z'> <span itemprop='position'>7</span> </span> </div> <div class='post' itemprop='text'> <aside class="quote no-group" data-username="Mike_Purtell" data-post="6" data-topic="87878"> <div class="title"> <div class="quote-controls"></div> <img loading="lazy" alt="" width="24" height="24" src="https://sea2.discourse-cdn.com/flex020/user_avatar/community.plotly.com/mike_purtell/48/21990_2.png" class="avatar"> Mike_Purtell:</div> <blockquote> <p>rolling_mean has unstable functionality and may be changed at any point without being considered a breaking change.</p> </blockquote> </aside> <p>I didn’t expect that. I’m sure a lot of people use this functionality, so stabilizing it is probably a priority.</p> </div> <div itemprop="interactionStatistic" itemscope itemtype="http://schema.org/InteractionCounter"> <meta itemprop="interactionType" content="http://schema.org/LikeAction"/> <meta itemprop="userInteractionCount" content="1" /> <span class='post-likes'>1 Like</span> </div> </div> </div> <div id="related-topics" class="more-topics__list " role="complementary" aria-labelledby="related-topics-title"> <h3 id="related-topics-title" class="more-topics__list-title"> Related topics </h3> <div class="topic-list-container" itemscope itemtype='http://schema.org/ItemList'> <meta itemprop='itemListOrder' content='http://schema.org/ItemListOrderDescending'> <table class='topic-list'> <thead> <tr> <th>Topic</th> <th></th> <th class="replies">Replies</th> <th class="views">Views</th> <th>Activity</th> </tr> </thead> <tbody> <tr class="topic-list-item" id="topic-list-item-86927"> <td class="main-link" itemprop='itemListElement' itemscope itemtype='http://schema.org/ListItem'> <meta itemprop='position' content='1'> <span class="link-top-line"> <a itemprop='url' href='https://community.plotly.com/t/figure-friday-2024-week-35/86927' class='title raw-link raw-topic-link'>Figure Friday 2024 - week 35</a> </span> <div class="link-bottom-line"> <a href='/c/python/25' class='badge-wrapper bullet'> <span class='badge-category-bg' style='background-color: #0E76BD'></span> <span class='badge-category clear-badge'> <span class='category-name'>Dash Python</span> </span> </a> <div class="discourse-tags"> <a href='https://community.plotly.com/tag/figure-friday' class='discourse-tag'>figure-friday</a> </div> </div> </td> <td class="replies"> <span class='posts' title='posts'>19</span> </td> <td class="views"> <span class='views' title='views'>262</span> </td> <td> September 10, 2024 </td> </tr> <tr class="topic-list-item" id="topic-list-item-88389"> <td class="main-link" itemprop='itemListElement' itemscope itemtype='http://schema.org/ListItem'> <meta itemprop='position' content='2'> <span class="link-top-line"> <a itemprop='url' href='https://community.plotly.com/t/holiday-season-app-challenge-nyc-mta/88389' class='title raw-link raw-topic-link'>:mega: Holiday Season App Challenge - NYC MTA</a> </span> <div class="link-bottom-line"> <a href='/c/python/25' class='badge-wrapper bullet'> <span class='badge-category-bg' style='background-color: #0E76BD'></span> <span class='badge-category clear-badge'> <span class='category-name'>Dash Python</span> </span> </a> <div class="discourse-tags"> <a href='https://community.plotly.com/tag/announcements' class='discourse-tag'>announcements</a> </div> </div> </td> <td class="replies"> <span class='posts' title='posts'>26</span> </td> <td class="views"> <span class='views' title='views'>1288</span> </td> <td> November 26, 2024 </td> </tr> <tr class="topic-list-item" id="topic-list-item-87101"> <td class="main-link" itemprop='itemListElement' itemscope itemtype='http://schema.org/ListItem'> <meta itemprop='position' content='3'> <span class="link-top-line"> <a itemprop='url' href='https://community.plotly.com/t/figure-friday-2024-week-36/87101' class='title raw-link raw-topic-link'>Figure Friday 2024 - week 36</a> </span> <div class="link-bottom-line"> <a href='/c/python/25' class='badge-wrapper bullet'> <span class='badge-category-bg' style='background-color: #0E76BD'></span> <span class='badge-category clear-badge'> <span class='category-name'>Dash Python</span> </span> </a> <div class="discourse-tags"> <a href='https://community.plotly.com/tag/figure-friday' class='discourse-tag'>figure-friday</a> </div> </div> </td> <td class="replies"> <span class='posts' title='posts'>20</span> </td> <td class="views"> <span class='views' title='views'>313</span> </td> <td> October 29, 2024 </td> </tr> <tr class="topic-list-item" id="topic-list-item-87233"> <td class="main-link" itemprop='itemListElement' itemscope itemtype='http://schema.org/ListItem'> <meta itemprop='position' content='4'> <span class="link-top-line"> <a itemprop='url' href='https://community.plotly.com/t/figure-friday-2024-week-37/87233' class='title raw-link raw-topic-link'>Figure Friday 2024 - week 37</a> </span> <div class="link-bottom-line"> <a href='/c/python/25' class='badge-wrapper bullet'> <span class='badge-category-bg' style='background-color: #0E76BD'></span> <span class='badge-category clear-badge'> <span class='category-name'>Dash Python</span> </span> </a> <div class="discourse-tags"> <a href='https://community.plotly.com/tag/figure-friday' class='discourse-tag'>figure-friday</a> </div> </div> </td> <td class="replies"> <span class='posts' title='posts'>17</span> </td> <td class="views"> <span class='views' title='views'>212</span> </td> <td> September 20, 2024 </td> </tr> <tr class="topic-list-item" id="topic-list-item-86264"> <td class="main-link" itemprop='itemListElement' itemscope itemtype='http://schema.org/ListItem'> <meta itemprop='position' content='5'> <span class="link-top-line"> <a itemprop='url' href='https://community.plotly.com/t/figure-friday-2024-week-31/86264' class='title raw-link raw-topic-link'>Figure Friday 2024 - week 31</a> </span> <div class="link-bottom-line"> <a href='/c/python/25' class='badge-wrapper bullet'> <span class='badge-category-bg' style='background-color: #0E76BD'></span> <span class='badge-category clear-badge'> <span class='category-name'>Dash Python</span> </span> </a> <div class="discourse-tags"> <a href='https://community.plotly.com/tag/figure-friday' class='discourse-tag'>figure-friday</a> </div> </div> </td> <td class="replies"> <span class='posts' title='posts'>19</span> </td> <td class="views"> <span class='views' title='views'>308</span> </td> <td> August 10, 2024 </td> </tr> </tbody> </table> </div> </div> </div> <footer class="container wrap"> <nav class='crawler-nav'> <ul> <li itemscope itemtype='http://schema.org/SiteNavigationElement'> <span itemprop='name'> <a href='/' itemprop="url">Home </a> </span> </li> <li itemscope itemtype='http://schema.org/SiteNavigationElement'> <span itemprop='name'> <a href='/categories' itemprop="url">Categories </a> </span> </li> <li itemscope itemtype='http://schema.org/SiteNavigationElement'> <span itemprop='name'> <a href='/guidelines' itemprop="url">Guidelines </a> </span> </li> <li itemscope itemtype='http://schema.org/SiteNavigationElement'> <span itemprop='name'> <a href='/tos' itemprop="url">Terms of Service </a> </span> </li> <li itemscope itemtype='http://schema.org/SiteNavigationElement'> <span itemprop='name'> <a href='/privacy' itemprop="url">Privacy Policy </a> </span> </li> </ul> </nav> <p class='powered-by-link'>Powered by <a href="https://www.discourse.org">Discourse</a>, best viewed with JavaScript enabled</p> </footer> <div class="buorg"><div>Unfortunately, <a href="https://www.discourse.org/faq/#browser">your browser is unsupported</a>. Please <a href="https://browsehappy.com">switch to a supported browser</a> to view rich content, log in and reply.</div></div> </body> </html>