经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python » 查看文章
Python利用D3Blocks绘制可动态交互的图表
来源:jb51  时间:2023/2/6 9:00:34  对本文有异议

今天小编给大家来介绍一款十分好用的可视化模块,D3Blocks,不仅可以用来绘制可动态交互的图表,并且导出的图表可以是HTML格式,方便在浏览器上面呈现。

热力图

热力图是一种通过对色块着色来显示数据的统计图表。绘图时需要指定颜色映射的规则。例如较大的值由较深的颜色表示,而较小的值由较浅的颜色表示等等。热力图适用于查看总体的情况,发现异常值、显示多个变量之间的差异,以及检测它们之间是否存在任何相关性。

我们这里来尝试绘制一张简单的热力图,代码如下

  1. from d3blocks import D3Blocks
  2. # 初始化
  3. d3 = D3Blocks()
  4. # 导入数据集
  5. df = d3.import_example('energy')
  6. # 绘制热力图
  7. d3.heatmap(df, showfig=True, stroke='red', vmax=10, figsize=(700,700))

output

粒子图

D3Blocks模块当的particles()方法可以方便我们将任何字体转换成带有动态效果的粒子图,跟随着鼠标的移动,图表中的元素也会动态的起伏飞舞,代码如下

  1. # 导入模块
  2. from d3blocks import D3Blocks
  3. # 初始化
  4. d3 = D3Blocks()
  5. # 绘制粒子图
  6. d3.particles('D3Blocks', collision=0.05, spacing=10, figsize=[1200, 500])

output

时间序列图

时间序列的折线图,又被称为是趋势图,是以时间为横轴,观察变量为纵轴,用来反映时间与数量之间的关系,这里我们调用的是timeseries()方法,代码如下

  1. # 导入模块
  2. from d3blocks import D3Blocks
  3. # 初始化
  4. d3 = D3Blocks()
  5. # 导入数据集
  6. df = d3.import_example('climate')
  7. # 打印出前面5行
  8. print(df.head())
  9. # 绘制图表
  10. d3.timeseries(df, datetime='date', dt_format='%Y-%m-%d %H:%M:%S', fontsize=10)

output

桑基图

桑基图是用于描述一组值到另一组值的流向的图表。在图表的内部,不同的线条代表了不同的流量分流情况,线条的宽度代表此分值所代表的数据大小。通常用于能源、材料成分、金融等数据的可视化分析。这里我们调用的是sankey()方法来实现,代码如下

  1. from d3blocks import D3Blocks
  2. # 初始化
  3. d3 = D3Blocks()
  4. # 导入数据集
  5. df = d3.import_example('energy')
  6. # 绘制图表
  7. d3.sankey(df, link={"color": "source-target"})

output

小提琴图

小提琴图可以用来绘制数据的分布以及其概率密度,针对的是数值型的变量,这种图表结合了箱型图和密度图的特征,主要用来显示数据的分布形状。这里我们调用violin()方法来实现,代码如下

  1. # 导入模块
  2. from d3blocks import D3Blocks
  3. # 初始化
  4. d3 = D3Blocks()
  5. # 导入数据集
  6. df = d3.import_example('cancer')
  7. # 显示的格式
  8. tooltip = df['labels'].values + ' <br /> Survival: ' + df['survival_months'].astype(str).values
  9. # 可视化图表
  10. d3.violin(x=df['labels'].values, # X轴上的值
  11. y=df['age'].values, # 年龄
  12. tooltip=tooltip, # 显示的格式
  13. bins=50, # bins的大小
  14. size=df['survival_months'].values/10, # 点状的大小
  15. x_order=['acc', 'kich', 'brca', 'lgg', 'blca', 'coad', 'ov'], # X轴的上的值
  16. figsize=[None, None], # 图表的大小
  17. filepath='violine_demo.html')

output

散点图

散点图通常用于查看X轴与Y轴之间是否有关联,它的绘制,我们这里调用的是scatter()方法,代码如下

  1. # 导入模块
  2. from d3blocks import D3Blocks
  3. # 初始化
  4. d3 = D3Blocks()
  5. # 导入数据集
  6. df = d3.import_example('cancer')
  7. # 显示数据的格式
  8. tooltip=df['labels'].values + ' <br /> Survival: ' + df['survival_months'].astype(str).str[0:4].values
  9. # 散点的大小
  10. size = df['survival_months'].fillna(1).values / 10
  11. # 绘制图表
  12. d3.scatter(df['x'].values,
  13. df['y'].values,
  14. x1=df['PC1'].values,
  15. y1=df['PC2'].values,
  16. scale=True,
  17. label_radio=['tSNE', 'PCA'], # 不同标签的种类
  18. size=size,
  19. color=df['labels'].values,
  20. stroke='#000000',
  21. opacity=0.4, # 透明度
  22. tooltip=tooltip, # 显示的格式
  23. cmap='tab20', # 颜色
  24. filepath='c://temp//scatter_demo.html')

output

弦图

弦图是一种显示数据矩阵中内部数据之间相互关系的图形可视化方法。在弦图内,数据围绕一个圆呈放射状排列,数据点之间的关系通常绘制为连接数据的圆弧。这里我们调用chord()方法来实现,代码如下

  1. from d3blocks import D3Blocks
  2. # 初始化
  3. d3 = D3Blocks()
  4. # 导入数据集
  5. df = d3.import_example('energy')
  6. # 绘制图表
  7. d3.chord(df, filepath='chord_demo.html')

output

网络图

除了上面这几种图表之外,D3Blocks模块还可以来绘制社交网络图,这里用到的是d3graph()方法,代码如下

  1. from d3blocks import D3Blocks
  2. # 初始化
  3. d3 = D3Blocks()
  4. # 导入数据集
  5. df = d3.import_example('energy')
  6. # 打印出前5行数据
  7. print(df)
  8. # 初始化网络图
  9. d3.d3graph(df, showfig=False)
  10. # 每个节点打上颜色
  11. d3.D3graph.set_node_properties(color='cluster')
  12. # 调整每个节点的位置
  13. d3.D3graph.node_properties['Thermal_generation']['size']=20
  14. d3.D3graph.node_properties['Thermal_generation']['edge_color']='#000fff' # 蓝色的节点
  15. d3.D3graph.node_properties['Thermal_generation']['edge_size']=3 # Node-edge Size
  16. # 调整每个连线的位置
  17. d3.D3graph.edge_properties['Solar', 'Solar_Thermal']['color']='#000fff'
  18. d3.D3graph.edge_properties['Solar', 'Solar_Thermal']['weight_scaled']=10
  19. # 绘制图表
  20. d3.D3graph.show()

output

以上就是Python利用D3Blocks绘制可动态交互的图表的详细内容,更多关于Python D3Blocks图表的资料请关注w3xue其它相关文章!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号