发布时间:2021-07-23 09:46:19 阅读:400 作者:chen 栏目:大数据
Python开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>
# Python数据可视化实现泡泡堆积关联图 # 数据可视化是数据分析中不可或缺的环节,而泡泡堆积关联图(Bubble Pack Chart)作为一种特殊的多维数据展示形式,通过**圆形面积编码**和**空间堆积布局**,能够同时呈现: - 分类层级结构 - 数值大小对比 - 多维度关联关系 本文将以Python为核心工具,详细讲解从数据准备到交互实现的完整技术路径。 # # | 库名称 | 层级支持 | 交互能力 | 学习曲线 | 适用场景 | |--------------|----------|----------|----------|--------------------| | Matplotlib | 基础 | 有限 | 平缓 | 静态基础图表 | | Plotly | 优秀 | 强大 | 中等 | 交互式可视化 | | Pygal | 中等 | SVG输出 | 简单 | 中小型数据集 | | Bokeh | 良好 | 优秀 | 较陡 | 大数据流式呈现 | # ```python # 环境安装 pip install plotly pandas numpy # 可选附加库 pip install colorlover # 专业配色工具
理想的输入数据应包含: - 类别字段:定义分组层级(如国家->省份->城市) - 数值字段:决定泡泡大小(如GDP数值) - 可选维度:用于颜色编码(如增长率)
import pandas as pd data = { 'continent': ['Asia']*4 + ['Europe']*3, 'country': ['China','China','Japan','India','France','Germany','Italy'], 'city': ['Shanghai','Beijing','Tokyo','Mumbai','Paris','Berlin','Rome'], 'gdp': [680, 530, 850, 310, 740, 670, 480], 'growth': [6.8, 5.2, 1.3, 7.1, 2.1, 1.8, 0.9] } df = pd.DataFrame(data) hierarchy = df.groupby(['continent','country'])['gdp'].sum().reset_index()
import matplotlib.pyplot as plt import numpy as np fig, ax = plt.subplots(figsize=(10,8)) max_gdp = df['gdp'].max() scale_factor = 1000 sizes = (df['gdp'] / max_gdp) * scale_factor scatter = ax.scatter( x=np.random.rand(len(df)), y=np.random.rand(len(df)), s=sizes, c=df['growth'], alpha=0.6, cmap='viridis' ) plt.colorbar(scatter, label='Growth Rate (%)') plt.title('Basic Bubble Chart') plt.axis('off')
import plotly.express as px fig = px.scatter( df, x="gdp", y="growth", size="gdp", color="continent", hover_name="city", size_max=60, template='plotly_dark' ) fig.update_layout( title='Interactive Bubble Chart', xaxis_title='GDP (Billion USD)', yaxis_title='Growth Rate (%)' ) fig.show()
采用d3-hierarchy的算法思想: 1. 根据父节点权重分配子节点空间 2. 使用前序遍历进行圆形排布 3. 通过力导向算法优化重叠
import plotly.graph_objects as go from plotly.subplots import make_subplots def create_sunburst(df): fig = go.Figure(go.Sunburst( labels=df['city'].tolist() + df['country'].tolist() + df['continent'].tolist(), parents=['China']*2 + ['Japan']*1 + ['India']*1 + ['France']*1 + ['Germany']*1 + ['Italy']*1 + ['Asia']*3 + ['Europe']*3, values=df['gdp'].tolist() + [0]*7, # 叶子节点才有真实值 marker=dict( colors=df['growth'], colorscale='Plasma' ), branchvalues='total' )) fig.update_layout( title='Hierarchical Bubble Pack', margin=dict(t=30, l=0, r=0, b=0) ) return fig
fig.update_traces( hovertemplate="<b>%{label}</b><br>" + "GDP: %{value:.1f}B<br>" + "Growth: %{color:.1f}%<extra></extra>" )
from IPython.display import Javascript Javascript(""" Plotly.d3.select('.plotly-graph-div').on('plotly_click', function(data){ var point = data.points[0]; if(point.level < 2) { Plotly.restyle('graph-div', {level: point.level + 1}, [point.curveNumber]); } }); """)
import colorlover as cl colors = cl.scales['5']['qual']['Pastel1'] fig.update_layout(colorway=colors)
fig.update_traces( marker=dict( line=dict(width=1, color='Gray'), opacity=0.8, sizemode='diameter' ), selector=dict(type='sunburst') )
world_data = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/gapminderDataFiveYear.csv') df_2007 = world_data[world_data.year == 2007] fig = px.sunburst( df_2007, path=['continent', 'country'], values='pop', color='lifeExp', hover_data=['gdpPercap'], color_continuous_scale='RdBu' ) fig.update_layout( title='World Population Bubble Pack (2007)', width=800, height=800 ) fig.show()
fig.update_layout( scene=dict( xaxis=dict(visible=False), yaxis=dict(visible=False), aspectmode='data' ), dragmode='lasso', uirevision='constant' )
泡泡堆积关联图特别适用于: - 展示层级结构中的比例分布 - 发现异常值(极大/极小泡泡) - 呈现多维度的关联模式
进阶方向建议: 1. 与地图结合实现地理编码 2. 添加时间轴制作动态演变 3. 集成机器学习聚类结果
“优秀的可视化不是简单地展示数据,而是构建数据与认知之间的桥梁。” —— Edward Tufte
完整代码库可访问:[GitHub示例仓库链接](此处替换为实际URL) “`
注:实际文章撰写时需: 1. 补充真实数据集示例 2. 调整代码片段适配最新库版本 3. 增加更多实际业务场景分析 4. 补充性能测试数据对比 5. 完善参考文献引用
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
向AI问一下细节
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/4612337/blog/4698720
上一篇新闻: 下一篇新闻:
相关知识
Python在线零售数据关联规则挖掘Apriori算法数据可视化
Python数据分析数据可视化
基于Python实现交互式数据可视化的工具(用于Web)
使用Altair实现Python交互式数据可视化
Python数据可视化 pyecharts实现各种统计图表过程详解
Python实现鸢尾花数据集可视化分析(超详细教程)
基于Python的全国主要城市天气数据可视化大屏系统
python数据可视化之条形图怎么画
Python实现NIKE耐克女REACT跑步鞋数据分析和可视化
【Python数据可视化秘籍】:Matplotlib和Seaborn图表绘制高级技巧
网址: Python数据可视化实现泡泡堆积关联图 https://m.huajiangbk.com/newsview2500188.html
| 上一篇: 数据可视化—复杂网络关系图的绘制 |
下一篇: 运维监控可视化大屏 |