Dash Club 9: New Gallery, Community App Winners & Winter Challenge, Partial Property Updates, Hiring, and more!

Welcome to the Dash Club newsletter. Dash Club brings essays and updates about Plotly and Dash to your inbox every 8 weeks. Feedback, questions? Respond to this email.

Chris (@chriddyp) & Adam (@adamschroeder)

​​​​​Prefer to view this on Medium? Check out the article.

In Dispatch #9

  • Version Check
  • Chris’ Reflections - Partial Property Updates
  • Component of the Month
  • Coming Soon in Dash - Dash AG Grid 2.0
  • App of the Month
  • Holiday Community App Challenge Winners
  • Community Example Apps Challenge
  • Dash Writing & Hiring
  • Things Happen

Version Check

Chris’ Reflections - Partial Property Updates

We talked about Dash Partial Properties Updates in last month’s Dash Club newsletter.

Dash Partial Properties introduces a new Patch() object that is returned from a callback and defines which operations should be applied to the component’s property by the Dash framework on the browser client.

Let’s look at a simple example with a dropdown and a graph.

Currently, Dash callbacks update the entire figure object and send that data over the network. However in many cases, only certain parts of the graph change. For example, the x-axis data might stay the same while the y-axis data changes.

With Partial Property Updates, you can update your callbacks to send over the new y-axis data on its own without the rest of the figure. In this example it reduces the size of the network payload by 50% (1 array of x data instead of 2 arrays of x and y data) and can be a noticeable performance improvement to charts or tables with >10K points.

The code change is simple. In current Dash, you’d have:

app.layout = html.Div([
d := dcc.Dropdown(df.columns),
g := dcc.Graph()
])

@app.callback(Output(g, "figure"), Input(d, "value"))
def update(value):
return px.scatter(df, x=df.Index, y=df.columns[1])

With Partial Property Updates, you can return a Patch() object that tells Dash’s frontend to only change the “y” data in the first trace instead of returning the entire figure. Same number of lines of code!

app.layout = html.Div([
      d := dcc.Dropdown(df.columns),
      g := dcc.Graph(figure=px.scatter(df, x=df.Index, y=df.columns[1]))
])
@app.callback(Output(g, "figure"), Input(d, "value"))
def update(value):
    return Patch()["data"][0]["y"] = df[value]

This is just one of many examples of how you can improve the performance and UX of your Dash apps with the new Patch() operations. This will be available in the next version of Dash in a week or so! Stay tuned to an announcement on the forum.

Component of the Month

The ExplainerDashboard by Oege Dijk is the most popular Dash Community Component on GitHub with ~1600 stars.

The ExplainerDashboard supports the building of interactive dashboards for analyzing and explaining the predictions and workings of machine learning models, including xgboost, catboost, and lightgbm.

:pray:Thank you Oege for creating this library and for sharing it with the community. Check out the Github repo, example dashboards, and docs.

Visit our community components index to see more components! And join our component-builder community by creating and sharing your own Community Components.

Coming Soon in Dash - Dash AG Grid 2.0

We are hard at work getting Dash Ag Grid 2.0 across the finish line. ICYMI, check out the Dash AG Grid Open Source prerelease video. v2.0.0a2 is released to PyPI and we have a draft of alpha documentation here.

App of the Month

An incredible World Cup Dashboard by Ivan Abboud, which highlights FIFA World Cup stats by country and by tournament. We had a lot of fun exploring this app and the breakdown of categories such as goal count, match count, attendance, and tournament timelines. Read more or check out the Github repo.

See more Dash apps or share your own in the Community Forum’s Show and Tell tag. If you would like your app to be considered for the next edition of the Dash Club newsletter, please message Adam on the Forum.

Holiday Community App Challenge Winners

Thank you all for participating in the Holiday App Challenge on predicting customer churn. The apps submitted were exceptional.

A group of Plotly staff judges reviewed and studied each app, and voted for the top three app winners. And the winners are…:drum:

:1st_place_medal: Customer Churn Dash App, created by Abdel, with the following code.

Abdel’s app won first place for the awesome prediction model and the insights it provides. We love seeing the univariate and multivariate analysis and the wealth of deep analytical models across the application.

:2nd_place_medal: Customer Churn Dash App, created by Joao, with the following code.

Joao’s app featured KNN clustering, customer persona segmentation, logistic regressions, confusion matrices, and more.

:3rd_place_medal: Customer Churn Dash App, created by Andrew, with the following code.

Andrew’s usage of the mapbox was a favorite among the Plotly staff. We also loved the simple and user-friendly churn prediction page. In addition, Andrew does a good job with the customer base page which offers a good macro-level analysis of the data.

We would like to reiterate our appreciation for the apps submitted by the other community members: app by Somesh, app by Tran Khanh.

The winning community members will receive a package of this season’s Plotly swag as well as the financial awards.

Community Example Apps Challenge

There is no shortage of beautiful Dash apps made by the community. We’ve launched a new platform, called Example Apps, which showcases the best Dash apps built across multiple industries and use cases.

Each app selected to join the platform will also highlight the author’s name, Github repo, and an article about the app.

We would like to officially open this initiative to the community and challenge you to submit your best Dash apps. The highest-quality apps selected by the Plotly Team will be displayed on the Example Apps platform, visited by thousands community members and customers every day.

We are accepting apps in the following categories: Energy & Utilities, Business, Predictive Analytics & Forecasting, NLP, Connecting to APIs.

To submit your apps, or for any questions, please email Adam at adam@plot.ly.

Dash Writing & Hiring

We’re opening up our blog to community authors! Our blog is visited thousands of times by community members and customers and we’d love to feature your writing, examples, or tutorials. We will compensate you for your time! If you’re interested in learning more about this paid opportunity, please contact Adam at adam@plot.ly.

We’re also expanding our technical team at Plotly, and we love to hire experts from the community. Product Managers and Engineers will get to work directly with myself, our engineering team, and our customer base to design, prototype, and build the next new features for Dash Open Source and Dash Enterprise. Check out the job postings and send us a note if you found out about the position from Dash Club.

Technical Product Manager

Product Marketing Manager
Intermediate Back End Engineer

Things Happen

:building_construction: Community member, Tom, just shared an update on the latest developments of Dash Bootstrap Components, making them more powerful than ever.

:building_construction: Community member, Snehil, just shared that the upcoming release of Dash Mantine will bring new components like Indicator, Navlink and TransferList.

:airplane: Claire, Plotly Marketing Specialist, brought the team to Corinium Global’s CDAO UK conference in London. Exhibiting there allowed us to engage in conversations and thought leadership around data and analytics.

:tv: Our very own Alex Johnson facilitated a webinar on Dash AG Grid. Watch the video!

:briefcase: Job postings from around the world looking for Dash skills.

:movie_camera: Community member, Jesús López, recorded and shared an introduction tutorial on creating a Python Dashboard with Plotly and Dash.

:magic_wand: Community member, Tim, shared the new and awesome collection of Dash Mantine & Dash Bootstrap UI Building Blocks.

:magic_wand: Community member, Steve, built and contributed a new dash-holoniq-apexcharts component, sharing about it on the Forum.

:magic_wand: Community member, Tyson, built and contributed a new Dash - TradingView Light Weight Charts component, sharing about it on the Forum.

:technologist: Community member, @Jcuypers, has been developing impressive improvements to the Dash callback graph.

:star: Community member, Edgar, has created a Dash app (in Spanish), visualizing the perception of public safety, based on reports by women in Monterrey, Mexico. Read more about it on the Forum.

:star: Community member, Luke, has created a Dash app (in Polish and English), visualizing their own version of the SARS-CoV epidemic. Read more about it on the Forum.

:star: Community member, Bryan, has shared an awesome tips-and-tricks post, showing how to display a loading screen only when a multi-page app layout changes.

:green_heart: Celebrating our top contributing community members in January.

Have a great week –

Chris & Adam

5 Likes

Is there a pre-release of the partial patch update? Was planning on rebuilding a chunk of my application this weekend and I think it’s something that could benefit a lot from this new paradigm. (Also, is the duplicate callback output patch going to be in this update as well? I think I saw them in the same pull request if I’m not mistaken). Thanks!

Hi @dash-beginner
It should be out any day now.

1 Like

Perfect, thanks! :slight_smile: