1. 从 Plotly 导出交互式图表
祝贺所有可视化爱好者和图表艺术家,你们已经来到我们数据可视化课程的最后一节课了。今天,我们将结束这段创造美观且信息丰富的图表之旅,并学习如何正确导出它们并集成到文档中。如果你之前还很疑惑,如何不仅用精准的分析还用那些可以嵌入到 HTML 页面中的图表来打动你的老板,那今天就是你的幸运日!
Plotly 支持的主要导出格式
Plotly 支持以下导出格式:
- HTML — 用于创建可以在浏览器中打开的交互式图表。
- PNG, JPG, PDF, SVG — 用于生成高质量的静态图像。
- JSON — 用于以 JSON 结构形式存储图表,这对于系统间数据传输非常有用。
导出方法
从我们的“明星”Plotly 开始。这个库因其交互性和创建动态图表的能力而闻名。但是,如何在不随身携带装有 Python 的笔记本电脑的情况下让世界看到你的图表呢?
Plotly 允许将图表导出为 HTML。这意味着你可以直接发送 HTML 文件,你的同事或客户可以在他们的浏览器中与图表交互。可以通过方法 plotly.io.write_html 来实现导出。示例如下:
import plotly.express as px
import plotly.io as pio
# 创建一个简单的交互式图表
df = px.data.iris() # irises 数据集
fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species")
# 将图表导出为 HTML
pio.write_html(fig, file='grafik.html', auto_open=True)
参数 auto_open=True 会在保存后立即在浏览器中打开文件 - 非常方便,如果你迫不及待想向同事展示你的作品,或者想确认一切保存正确。
导出为其他格式
Plotly 还可以导出为图像格式,例如 PNG, JPEG 和 SVG。使用方法 plotly.io.write_image 实现。这里需要额外的库 kaleido 来支持图像格式的渲染:
pip install -U kaleido
现在导出图表:
# 将图表导出为 PNG
pio.write_image(fig, file='grafik.png')
# 将图表导出为 JPG
pio.write_image(fig, file='grafik.jpg', width=800, height=400, scale=2)
2. 在报告中包含图表
导出的图表可以成为你分析报告的重要组成部分。例如,导出的 HTML 图表可以很容易嵌入到你打算在网络研讨会上展示或上传到公司门户的报告中。
将图表嵌入 Word 和 PDF 文档
为了将图表集成到 Microsoft Word 或 PDF 文档中,只需保存图表为 PNG 或 JPG 格式,然后将其作为图片插入。可以直接拖拽文件到文档中,或使用 Word 和 PDF 编辑器的内置插入功能。
fig.write_image("sales_chart.pdf")
PDF 格式适合打印和分发高质量图表。通过 kaleido 导出 Plotly 图表为 PDF 时,只需指定文件格式即可。
在 Web 文档中嵌入交互式图表
HTML 格式的 Plotly 交互式图表可以嵌入到网页中。这对于在线报告和网络文档尤其有用。要嵌入图表,可以使用 HTML 文件链接,或者直接将 HTML 代码嵌入网页。
要嵌入交互式图表,可以在 HTML 页面上使用 iframe:
<iframe src="grafik.html" width="800" height="600"></iframe>
这样,图表就会嵌入到你的页面中,并可供互动。
将图表导出为 JSON
JSON 格式适合以数据形式存储图表,方便系统间传输或之后编辑。JSON 文件可以导入回 Plotly 并重新呈现。
# 保存图表为 JSON
fig.write_json("sales_chart.json")
为不同类型的报告选择格式和参数
- 用于打印和出版:使用 PNG 或 PDF 高分辨率格式(
dpi=300),以确保图像清晰。 - 用于网络文档和演示:PNG 和 SVG 格式非常适合网络文档。SVG 可缩放且放大时不会失真。
- 用于交互式报告:保存为 Plotly 的 HTML 格式,并嵌入到网页或在线文档中。
3. 示例
现在,巩固一下知识,我们来创建一个交互式图表,导出它并集成到一个简单的 HTML 文档中。
创建图表:
import plotly.express as px
import plotly.io as pio
df = px.data.tips()
fig = px.bar(df, x='day', y='total_bill', color='sex', barmode='group')
pio.write_html(fig, file='tips_graph.html', auto_open=True)
创建包含图表的 HTML 文档:
将以下代码保存为 index.html:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>小费报告</title>
</head>
<body>
<h1>按星期几分析小费</h1>
<p>下面是一个交互式图表,展示了根据星期几和性别汇总的小费。</p>
<iframe src="tips_graph.html" width="900" height="500" frameBorder="0"></iframe>
</body>
</html>
查看文档:
在浏览器中打开 index.html 并欣赏结果!你刚刚创建了一个可发送给同事或发布到互联网上的报告。
交互式图表不仅漂亮,还能帮助深入分析数据并展示结果。使用它们可以让你的报告更加令人印象深刻且多功能。
最后,在我们学习 Plotly 和 Matplotlib 的结尾,我想说,正确的信息展示几乎是一门艺术。使用所学知识,让你的数据看起来很棒并最大限度地发挥作用!祝你成功打造自己的可视化杰作!
GO TO FULL VERSION