MST

星途 面试题库

面试题:Python数据可视化时如何根据数据特征动态设置样式

假设你有一个包含多种类别的数值型数据集,使用Python数据可视化库(如Plotly),如何根据不同类别数据的大小、分布等特征,动态地为每个类别设置独特的线条样式(如线型、线宽)和标记样式(如标记形状、标记颜色),请给出详细实现思路及核心代码。
29.1万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 数据准备:导入必要的库,读取数据集,并确保数据格式正确。识别数据集中的类别列和数值列。
  2. 初始化绘图:使用Plotly创建一个图形对象。
  3. 遍历类别:对每个类别数据进行如下操作:
    • 根据类别筛选数据。
    • 分析数据大小、分布特征,例如计算均值、标准差等统计量。
    • 根据分析结果动态确定线条样式(线型、线宽)和标记样式(标记形状、标记颜色)。
    • 将该类别数据添加到图形对象中,使用确定好的样式。
  4. 显示图形:展示绘制好的图形。

核心代码

import plotly.graph_objects as go
import pandas as pd
import numpy as np

# 假设数据集保存在data.csv文件中,包含'category'类别列和'value'数值列
data = pd.read_csv('data.csv')

fig = go.Figure()

categories = data['category'].unique()
for category in categories:
    category_data = data[data['category'] == category]['value']
    
    # 简单示例:根据数据均值动态设置线宽,根据标准差设置标记颜色
    mean_value = np.mean(category_data)
    std_value = np.std(category_data)
    line_width = mean_value / 10  # 假设均值范围合适,可根据实际调整
    marker_color = std_value  # 可映射到颜色空间,如使用归一化等
    
    fig.add_trace(go.Scatter(
        x=category_data.index,
        y=category_data.values,
        mode='lines+markers',
        name=category,
        line=dict(width=line_width, dash='solid' if mean_value > 50 else 'dash'),  # 示例线型判断
        marker=dict(size=8, color=marker_color, symbol='circle' if std_value < 10 else 'triangle-up')  # 示例标记形状判断
    ))

fig.show()