DEV Community

Cover image for kill it with the 3D scatter plot
ANNA LAPUSHNER
ANNA LAPUSHNER

Posted on

kill it with the 3D scatter plot

Image description

Image description

100% awesome. The interactive 3D scatterplot is so killer. The key to making a great scatter plot is picking 3 axis points that can be correlated AND choosing a mean/average of a manageable number of features.

I love it! Hope you do too!

# Create a killer 3d scatter plot of company revenue. The axis points are the top 10 restaurants, average order and rating
# Calculate average order value for each restaurant
avg_order_value = df.groupby('restaurant_name')['cost_of_the_order'].mean()

# Calculate average rating for each restaurant
avg_rating = df_rated.groupby('restaurant_name')['rating'].mean()

# Get top 10 restaurants by revenue
top_10_restaurants = revenue_by_restaurant.head(10).index

# Filter data for top 10 restaurants
df_top10 = df[df['restaurant_name'].isin(top_10_restaurants)]

# Create a new DataFrame for plotting
plot_df = pd.DataFrame({
    'Restaurant': top_10_restaurants,
    'Revenue': revenue_by_restaurant.loc[top_10_restaurants],
    'Average Order Value': avg_order_value.loc[top_10_restaurants],
    'Average Rating': avg_rating.loc[top_10_restaurants]
})

# Create 3D scatter plot
fig = px.scatter_3d(plot_df, x='Average Order Value', y='Average Rating', z='Revenue',
                    color='Restaurant', size_max=10, opacity=0.7)

fig.update_layout(title='Company Revenue vs. Average Order Value and Rating (Top 10 Restaurants)',
                  scene=dict(xaxis_title='Average Order Value',
                             yaxis_title='Average Rating',
                             zaxis_title='Revenue'))
Enter fullscreen mode Exit fullscreen mode

Top comments (0)