使用 graph_objects 类在 Plotly 中创建直方图


直方图是数据集分布的图形表示,可以使用 Plotly(一个 Python 库,其中包含一个称为 graph_objects 的类)创建,我们可以使用该类创建直方图。直方图有助于理解数据集的形状,其中还包括异常值、集中趋势和离散度。

Plotly 是一个 Python 库,允许我们以各种格式创建交互式可视化,包括散点图、折线图和直方图。graph_objects 类提供了一个高级接口来创建一些复杂的图表,并允许我们自定义图表的每个方面。在本文中,我们将探讨如何使用 PLotly graph_objects 类创建直方图。

plotly.graph_object 类

graph_objects 类是 Plotly 的一个子库,允许用户使用更面向对象的方法创建和修改可视化。使用 graph_objects,用户可以创建一个 Figure 对象,并将各种图表类型作为 Traces 添加到其中。例如,要使用 graph_objects 创建直方图,我们可以创建一个 Figure 对象并向其中添加一个 Histogram 轨迹。

名为 graph_objects 的类通常导入为 go,并包含一个自动生成的 Python 类层次结构,该层次结构表示图形模式中的非叶子节点。“graph_objects”一词指的是这些类的实例。

语法

plotly.graph_objects.Table(arg=None, cells=None, columnorder=None, columnordersrc=None, columnwidth=None, columnwidthsrc=None, customdata=None, customdatasrc=None, domain=None, header=None, hoverinfo=None, hoverinfosrc=None, hoverlabel=None, ids=None, idssrc=None, legendgrouptitle=None, legendrank=None, legendwidth=None, meta=None, metasrc=None, name=None, stream=None, uid=None, uirevision=None, visible=None, **kwargs)

使用 graph_objects 类在 Plotly 中创建直方图

使用 graph_objects 创建直方图(通过生成随机数据)

按照以下步骤使用 graph_objects 类在 Plotly 中创建直方图,方法是使用 numpy 创建随机数据:

  • 导入 plotly.graph_objects 模块,其中包含我们将用于创建绘图的 Histogram 类以及 Figure 类。

  • 使用 numpy.random.normal 函数生成一些随机数据,该函数从正态分布生成随机数。

  • 使用 Histogram 类创建直方图,并将我们的随机数据作为 x 参数传递。这将创建一个具有默认设置的直方图,我们稍后可以对其进行自定义。

  • 使用 Figure 类的 update_layout 方法向绘图添加轴标签和标题。

  • 使用 title 参数指定标题,使用 xaxis_title 和 yaxis_title 参数指定 x 轴和 y 轴标签。

  • 使用 Figure 类的 show 方法在新窗口中显示我们的绘图。

示例

import plotly.graph_objects as go
import numpy as np

# Generate some random data
np.random.seed(123)
x = np.random.normal(size=1000)

# Create the histogram using graph_objects
fig = go.Figure(data=[go.Histogram(x=x)])

# Add axis labels and title
fig.update_layout(
   title="Histogram of Random Data",
   xaxis_title="Value",
   yaxis_title="Count",
)

# Show the plot
fig.show()

输出

使用 graph_objects 创建直方图(内置数据集)

按照以下步骤使用 graph_objects 类创建直方图,使用 Python 的 Seaborn 库中存在的 tips 数据集:

  • 导入必要的库,包括 plotly.graph_objects 模块和 seaborn 模块。

  • 使用 load_dataset('tips') 函数加载内置的 tips 数据集。

  • 使用 go.Histogram() 函数创建四种不同类型的直方图。

  • 第一个直方图是使用 Total Bill 列的基本直方图对象。

  • 第二个直方图是使用 Tip 列的累积直方图对象,其中 cumulative_enabled 参数设置为 True。

  • 第三个直方图是使用 Size 列的归一化直方图对象,其中 histnorm 参数设置为 'probability'。

  • 第四个直方图是使用 Tip 和 Size 列的堆叠直方图对象,具有不同的标记颜色和每个列的图例名称。

  • 使用 go.Figure() 函数创建 Figure 对象,并将所有四个直方图添加到其中。

  • 使用 update_layout() 方法自定义图形的布局,以添加标题和轴标签。

  • 使用 show() 方法显示图形。

示例

import seaborn as s
import plotly.graph_objects as go

# Load the built-in tips dataset
d= s.load_dataset('tips')

# Create a basic histogram object using the Total Bill column
hist1 = go.Histogram(x=d['total_bill'], nbinsx=30)

# Create a cumulative histogram object using the Tip column
hist2 = go.Histogram(x=d['tip'], nbinsx=20, cumulative_enabled=True)

# Create a normalized histogram object using the Size column
hist3 = go.Histogram(x=d['size'], nbinsx=5, histnorm='probability density')

# Create a stacked histogram object using the Tip and Size columns
hist4 = go.Histogram(x=d['tip'], y=d['size'], nbinsx=10, nbinsy=5, histfunc='sum', histnorm='probability')

# Create a figure object and add all histograms to it
tfig = go.Figure(data=[hist1, hist2, hist3, hist4])

# Customize the layout of the figure
tfig.update_layout(
   title='Histograms of Tips Dataset',
   xaxis_title='Values',
   yaxis_title='Frequency',
   barmode='overlay',
   bargap=0.1,
   bargroupgap=0.1
)

# Display the figure
tfig.show()

输出

使用 Total Bill 列的基本直方图对象:

使用 Tip 列的累积直方图对象

使用 Size 列的归一化直方图对象:

使用 Tip 和 Size 列的堆叠直方图对象:

结论

总之,Plotly 中的 graph_objects 类为我们提供了一个优化且强大的工具来创建可自定义的可视化,包括直方图。我们知道,使用 graph_objects,我们可以轻松生成不同类型的直方图(基本、归一化、累积、堆叠),使用内置数据集,或者甚至在用户创建的数据集上,并根据需要自定义箱数、图例、颜色和其他参数。生成的视觉效果是交互式的,允许用户放大、平移和悬停在数据点上以获取更多信息。

更新于:2023-07-24

412 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告