通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

Python中如何绘制区域图形

Python中如何绘制区域图形

在Python中绘制区域图形有几种常见的工具和库,其中Matplotlib、Seaborn、Plotly是最常用的。Matplotlib提供了基础的绘图功能、Seaborn在Matplotlib的基础上进行了更高级的封装并添加了更多的统计图表、Plotly则提供了交互式的绘图功能。本文将详细介绍如何使用这三种工具绘制区域图形。

一、Matplotlib绘制区域图形

Matplotlib是Python中最基础、最常用的绘图库。它提供了丰富的绘图功能,可以绘制各种类型的图表,包括区域图形。

1、安装Matplotlib

在使用Matplotlib之前,你需要确保已经安装了该库。你可以通过以下命令安装Matplotlib:

pip install matplotlib

2、绘制简单的区域图

以下示例展示了如何使用Matplotlib绘制一个简单的区域图:

import matplotlib.pyplot as plt

import numpy as np

创建数据

x = np.linspace(0, 10, 100)

y1 = np.sin(x)

y2 = np.cos(x)

绘制区域图

plt.fill_between(x, y1, color="skyblue", alpha=0.4)

plt.fill_between(x, y2, color="orange", alpha=0.4)

添加图例

plt.legend(["sin(x)", "cos(x)"])

显示图形

plt.show()

在上面的代码中,我们使用fill_between函数来填充两个曲线之间的区域。color参数指定了填充颜色,alpha参数指定了填充颜色的透明度。

3、绘制堆叠区域图

堆叠区域图用于展示多个数据系列的累积值。以下示例展示了如何使用Matplotlib绘制堆叠区域图:

import matplotlib.pyplot as plt

import numpy as np

创建数据

x = np.linspace(0, 10, 100)

y1 = np.sin(x)

y2 = np.sin(x) + np.cos(x)

y3 = np.sin(x) - np.cos(x)

绘制堆叠区域图

plt.fill_between(x, y1, color="skyblue", alpha=0.4)

plt.fill_between(x, y2, y1, color="orange", alpha=0.4)

plt.fill_between(x, y3, y2, color="green", alpha=0.4)

添加图例

plt.legend(["sin(x)", "sin(x) + cos(x)", "sin(x) - cos(x)"])

显示图形

plt.show()

通过使用多个fill_between函数并传入不同的上下边界值,可以绘制堆叠区域图。

二、Seaborn绘制区域图形

Seaborn是一个基于Matplotlib的高级绘图库,提供了更简洁的API和更美观的默认样式。它特别适合绘制统计图表。

1、安装Seaborn

你可以通过以下命令安装Seaborn:

pip install seaborn

2、绘制简单的区域图

以下示例展示了如何使用Seaborn绘制一个简单的区域图:

import seaborn as sns

import matplotlib.pyplot as plt

import numpy as np

创建数据

x = np.linspace(0, 10, 100)

y = np.sin(x)

创建数据框

data = {"x": x, "y": y}

绘制区域图

sns.lineplot(x="x", y="y", data=data)

plt.fill_between(x, y, color="skyblue", alpha=0.4)

显示图形

plt.show()

在上面的代码中,我们首先使用lineplot函数绘制了一个线图,然后使用fill_between函数填充线图下方的区域。

3、绘制堆叠区域图

Seaborn没有直接提供绘制堆叠区域图的API,但我们可以结合Matplotlib来实现:

import seaborn as sns

import matplotlib.pyplot as plt

import numpy as np

创建数据

x = np.linspace(0, 10, 100)

y1 = np.sin(x)

y2 = np.sin(x) + np.cos(x)

y3 = np.sin(x) - np.cos(x)

创建数据框

data = {"x": x, "y1": y1, "y2": y2, "y3": y3}

绘制堆叠区域图

sns.lineplot(x="x", y="y1", data=data)

sns.lineplot(x="x", y="y2", data=data)

sns.lineplot(x="x", y="y3", data=data)

plt.fill_between(x, y1, color="skyblue", alpha=0.4)

plt.fill_between(x, y2, y1, color="orange", alpha=0.4)

plt.fill_between(x, y3, y2, color="green", alpha=0.4)

显示图形

plt.show()

三、Plotly绘制区域图形

Plotly是一个用于创建交互式图表的绘图库,支持多种图表类型,并且图表可以在网页上进行交互。

1、安装Plotly

你可以通过以下命令安装Plotly:

pip install plotly

2、绘制简单的区域图

以下示例展示了如何使用Plotly绘制一个简单的区域图:

import plotly.graph_objects as go

import numpy as np

创建数据

x = np.linspace(0, 10, 100)

y = np.sin(x)

创建区域图

fig = go.Figure()

fig.add_trace(go.Scatter(x=x, y=y, fill='tozeroy', mode='none', fillcolor='skyblue'))

显示图形

fig.show()

在上面的代码中,我们使用Scatter函数创建一个区域图,并使用fill='tozeroy'参数将区域填充到x轴。

3、绘制堆叠区域图

以下示例展示了如何使用Plotly绘制堆叠区域图:

import plotly.graph_objects as go

import numpy as np

创建数据

x = np.linspace(0, 10, 100)

y1 = np.sin(x)

y2 = np.sin(x) + np.cos(x)

y3 = np.sin(x) - np.cos(x)

创建堆叠区域图

fig = go.Figure()

fig.add_trace(go.Scatter(x=x, y=y1, fill='tozeroy', mode='none', fillcolor='skyblue'))

fig.add_trace(go.Scatter(x=x, y=y2, fill='tonexty', mode='none', fillcolor='orange'))

fig.add_trace(go.Scatter(x=x, y=y3, fill='tonexty', mode='none', fillcolor='green'))

显示图形

fig.show()

在上面的代码中,我们使用fill='tonexty'参数将每个区域填充到前一个区域的顶部,从而实现堆叠效果。

四、其他绘图库

除了Matplotlib、Seaborn和Plotly,Python中还有其他一些绘图库也可以用于绘制区域图形,例如Bokeh、Altair等。

1、Bokeh绘制区域图形

Bokeh是一个用于创建交互式可视化的库,特别适合用于网页展示。

安装Bokeh

你可以通过以下命令安装Bokeh:

pip install bokeh

绘制简单的区域图

以下示例展示了如何使用Bokeh绘制一个简单的区域图:

from bokeh.plotting import figure, show

from bokeh.io import output_notebook

import numpy as np

output_notebook()

创建数据

x = np.linspace(0, 10, 100)

y = np.sin(x)

创建图形

p = figure(title="Simple Area Plot", x_axis_label='x', y_axis_label='y')

p.patch(x, y, color="skyblue", alpha=0.4)

显示图形

show(p)

绘制堆叠区域图

以下示例展示了如何使用Bokeh绘制堆叠区域图:

from bokeh.plotting import figure, show

from bokeh.io import output_notebook

import numpy as np

output_notebook()

创建数据

x = np.linspace(0, 10, 100)

y1 = np.sin(x)

y2 = np.sin(x) + np.cos(x)

y3 = np.sin(x) - np.cos(x)

创建图形

p = figure(title="Stacked Area Plot", x_axis_label='x', y_axis_label='y')

p.patch(x, y1, color="skyblue", alpha=0.4)

p.patch(x, y2, color="orange", alpha=0.4)

p.patch(x, y3, color="green", alpha=0.4)

显示图形

show(p)

2、Altair绘制区域图形

Altair是一个基于Vega和Vega-Lite构建的声明式可视化库,适用于快速创建统计图表。

安装Altair

你可以通过以下命令安装Altair:

pip install altair

绘制简单的区域图

以下示例展示了如何使用Altair绘制一个简单的区域图:

import altair as alt

import pandas as pd

import numpy as np

创建数据

x = np.linspace(0, 10, 100)

y = np.sin(x)

data = pd.DataFrame({"x": x, "y": y})

创建区域图

chart = alt.Chart(data).mark_area().encode(

x='x',

y='y'

)

显示图形

chart.show()

绘制堆叠区域图

以下示例展示了如何使用Altair绘制堆叠区域图:

import altair as alt

import pandas as pd

import numpy as np

创建数据

x = np.linspace(0, 10, 100)

y1 = np.sin(x)

y2 = np.sin(x) + np.cos(x)

y3 = np.sin(x) - np.cos(x)

data = pd.DataFrame({"x": x, "y1": y1, "y2": y2, "y3": y3})

创建堆叠区域图

chart = alt.Chart(data).transform_fold(

['y1', 'y2', 'y3'],

as_=['variable', 'value']

).mark_area().encode(

x='x',

y='value:Q',

color='variable:N'

)

显示图形

chart.show()

五、总结

在Python中绘制区域图形可以使用多种工具和库,包括Matplotlib、Seaborn、Plotly、Bokeh和Altair等。Matplotlib提供了基础的绘图功能,适合各种自定义绘图需求;Seaborn在Matplotlib的基础上进行了更高级的封装,适合绘制统计图表;Plotly提供了交互式的绘图功能,适合在网页上展示交互式图表;Bokeh和Altair也提供了强大的交互式绘图功能,适合快速创建美观的图表。通过熟练掌握这些工具,你可以根据需求选择合适的绘图库来绘制各种区域图形。

相关问答FAQs:

如何在Python中选择合适的库来绘制区域图形?
在Python中,常用的绘图库有Matplotlib、Seaborn和Plotly等。Matplotlib是最基础的库,适合初学者,提供了丰富的绘图功能。Seaborn是基于Matplotlib构建的,适合绘制统计图形,能够更轻松地进行美观的图形展示。Plotly则适合制作交互式图形,使用简单且功能强大。选择哪种库取决于您的具体需求和项目的复杂性。

绘制区域图形时,如何自定义图形的外观?
在使用Matplotlib绘制区域图形时,可以通过设置颜色、线型、透明度等参数来调整图形外观。例如,使用fill_between函数可以填充区域,并通过color参数指定颜色,通过alpha参数调整透明度。此外,还可以添加标题、标签和网格线,以提高图形的可读性和美观性。

如何处理区域图形中的多个数据系列?
当需要在同一张图中绘制多个区域图形时,可以调用fill_between函数多次,为每个数据系列设置不同的颜色和透明度。可以通过label参数为每个区域图形添加图例,以便于区分各个数据系列。此外,使用plt.legend()函数可以在图形上显示这些图例,使得图形更具信息性和易读性。

相关文章