使用 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,我们可以轻松生成不同类型的直方图(基本、归一化、累积、堆叠),使用内置数据集,或者甚至在用户创建的数据集上,并根据需要自定义箱数、图例、颜色和其他参数。生成的视觉效果是交互式的,允许用户放大、平移和悬停在数据点上以获取更多信息。