数据可视化中常用的图表类型 及其适用场景,涵盖基础到高级,帮助你根据数据类型和展示目标选择合适的图表:

发布于:2025-07-09 ⋅ 阅读:(16) ⋅ 点赞:(0)

一、基础图表(单变量分析)

1. 柱状图(Bar Chart)
  • 功能:比较不同类别的数值大小。

  • 场景:销售额对比、城市人口排名。

  • 工具matplotlib / seaborn / pyecharts

import matplotlib.pyplot as plt
categories = ['A', 'B', 'C']
values = [25, 40, 30]
plt.bar(categories, values)
plt.show()

2. 折线图(Line Chart)
  • 功能:展示数据随时间变化的趋势。

  • 场景:股票价格波动、气温变化。

dates = ['Jan', 'Feb', 'Mar']
sales = [120, 150, 180]
plt.plot(dates, sales, marker='o')
plt.show()

3. 饼图(Pie Chart)
  • 功能:显示各部分占整体的比例。

  • 场景:市场份额、预算分配。

labels = ['Food', 'Rent', 'Travel']
sizes = [30, 50, 20]
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.show()


二、进阶图表(多变量关系)

1. 散点图(Scatter Plot)
  • 功能:观察两个变量之间的相关性。

  • 场景:身高体重关系、广告投入与销量。

x = [1, 2, 3, 4, 5]
y = [2, 4, 5, 4, 5]
plt.scatter(x, y)
plt.show()

2. 热力图(Heatmap)
  • 功能:用颜色矩阵展示数据密度或相关性。

  • 场景:网站点击热区、变量相关系数矩阵。

import seaborn as sns
data = [[0.9, 0.2], [0.3, 0.8]]
sns.heatmap(data, annot=True)
plt.show()

3. 箱线图(Box Plot)
  • 功能:显示数据分布和异常值(四分位数)。

  • 场景:收入分布分析、实验数据异常检测。

data = [np.random.normal(0, std, 100) for std in range(1, 4)]
plt.boxplot(data)
plt.show()

三、高级图表(复杂数据)

1. 地理信息图(Geospatial Map)
  • 功能:结合地理位置展示数据分布。

  • 场景:疫情分布、人口密度。

  • 工具folium / pyecharts / plotly

import folium
m = folium.Map(location=[35, 110], zoom_start=4)
folium.Marker([39.9, 116.4], popup='北京').add_to(m)
m.save('map.html')
2. 桑基图(Sankey Diagram)
  • 功能:展示流量或状态转移路径。

  • 场景:用户行为路径、能源流动。

from pyecharts.charts import Sankey
nodes = [{"name": "A"}, {"name": "B"}, {"name": "C"}]
links = [{"source": "A", "target": "B", "value": 10}]
Sankey().add("", nodes, links).render("sankey.html")
3. 雷达图(Radar Chart)
  • 功能:多维度能力评估对比。

  • 场景:球员能力分析、产品特性评估。

from pyecharts.charts import Radar
schema = [{"name": "进攻", "max": 100}, {"name": "防守", "max": 100}]
data = [[{"name": "球员A", "value": [90, 70]}]]
Radar().add_schema(schema).add("", data).render("radar.html")

四、动态交互图表

1. 动态折线图(Animation)
  • 功能:实时展示数据变化过程。

  • 场景:实时监控、动态数据流。

import matplotlib.animation as animation
fig, ax = plt.subplots()
line, = ax.plot([], [])
def animate(i):
    line.set_data(range(i), np.random.rand(i))
    return line,
ani = animation.FuncAnimation(fig, animate, frames=20, interval=200)
plt.show()
2. 交互式仪表盘(Dashboard)
  • 工具Dash / Streamlit / Panel

  • 场景:商业智能(BI)报表、数据探索平台。

import dash
import dash_core_components as dcc
app = dash.Dash()
app.layout = dcc.Graph(figure={'data': [{'x': [1,2], 'y': [3,1], 'type': 'bar'}]})
app.run_server(debug=True)

五、专业领域图表

1. 金融图表(Candlestick)
  • 功能:展示股票开盘、收盘、最高、最低价。

  • 工具mplfinance / plotly

import mplfinance as mpf
data = pd.read_csv('stock.csv', index_col=0, parse_dates=True)
mpf.plot(data, type='candle', volume=True)
2. 生物医学图表(Violin Plot)
  • 功能:结合箱线图和核密度估计。

  • 场景:基因表达分布、药物反应数据。

sns.violinplot(x="group", y="value", data=df)
plt.show()

六、如何选择图表?

目标 推荐图表
比较类别间数值 柱状图、条形图
显示数据分布 直方图、箱线图、小提琴图
展示时间趋势 折线图、面积图
揭示变量间关系 散点图、气泡图、热力图
部分与整体关系 饼图、环形图、旭日图
地理数据可视化 地图、等值线图
复杂流程/网络关系 桑基图、关系图(Graph)


网站公告

今日签到

点亮在社区的每一天
去签到