可视化
大部分内容属于ai,代码都没问题,板子而已(目前只有python
Pytorch
matplotlib
一、安装与导入
python
!pip install matplotlib numpy
import matplotlib.pyplot as plt
import numpy as np
二、基础图表绘制
1. 折线图
python
x = [1, 2, 3, 4]
y = [10, 20, 25, 30]
plt.figure(figsize=(8,4)) # 设置画布尺寸
plt.plot(x, y,
color='red', # 颜色
linestyle='--', # 线型 (':'虚线, '-.'点划线)
marker='o', # 标记点形状 (s:方块, ^:三角形)
linewidth=2, # 线宽
label='趋势线') # 图例标签
plt.title("示例折线图") # 标题
plt.xlabel("X轴") # X轴标签
plt.ylabel("Y轴") # Y轴标签
plt.grid(True) # 显示网格
plt.legend() # 显示图例
plt.show()
2. 柱状图
python
labels = ['A', 'B', 'C']
values = [25, 40, 30]
plt.bar(labels, values,
color=['#1f77b4', '#ff7f0e', '#2ca02c'], # 颜色列表
width=0.6, # 柱子宽度
alpha=0.8) # 透明度
plt.ylim(0, 50) # Y轴范围
plt.show()
3. 散点图
python
x = np.random.randn(100)
y = x + np.random.randn(100)*0.3
plt.scatter(x, y,
s=50, # 点大小
c=np.arange(100), # 颜色映射
cmap='viridis', # 颜色方案
alpha=0.7)
plt.colorbar() # 显示颜色条
plt.show()
4. 饼图
python
sizes = [15, 30, 45, 10]
labels = ['A', 'B', 'C', 'D']
plt.pie(sizes,
labels=labels,
autopct='%1.1f%%', # 显示百分比格式
startangle=90, # 起始角度
explode=(0,0.1,0,0)) # 突出显示第二块
plt.axis('equal') # 显示为正圆
plt.show()
三、高级功能
1. 子图布局
python
fig, axs = plt.subplots(2, 2, figsize=(10,8)) # 2行2列
# 绘制第一个子图
axs[0,0].plot(x, y)
axs[0,0].set_title("子图1")
# 绘制第四个子图
axs[1,1].scatter(x, y)
plt.tight_layout() # 自动调整间距
plt.show()
2. 样式设置
python
plt.style.use('seaborn') # 使用内置样式 (ggplot, seaborn, dark_background等)
plt.xkcd() # 手绘风格(慎用)
3. 添加注释
python
plt.plot(x, y)
plt.text(2, 20, '重要节点', # 在(2,20)处添加文字
fontsize=12,
color='red',
bbox=dict(facecolor='yellow', alpha=0.5)) # 文本框样式
plt.annotate('峰值', xy=(3,30), xytext=(3.5,25),
arrowprops=dict(arrowstyle='->')) # 带箭头的注释
四、实用技巧
- 显示中文:
python
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
- 导出图片:
python
plt.savefig('output.png',
dpi=300, # 分辨率
bbox_inches='tight', # 去除白边
transparent=True) # 透明背景
- 常用参数速查:
plt.xlabel(fontsize=12, color='blue')
# 轴标签样式plt.xticks(rotation=45)
# X轴标签旋转plt.tight_layout()
# 自动调整元素间距plt.subplots_adjust(wspace=0.3, hspace=0.5)
# 手动调整子图间距
五、常见问题解决
- 中文显示为方框 → 配置中文字体
- 图例被遮挡 → 调整
bbox_to_anchor=(1,1)
- 导出图片模糊 → 提高dpi参数 (300-600)
- 坐标轴科学计数法 →
plt.ticklabel_format(style='plain')
以下是一份全面且可直接使用的 Seaborn 绘图知识大全,涵盖常用功能及示例代码:
Seaborn
1. 数据准备
- 数据格式:建议使用
pandas.DataFrame
(长格式数据),便于直接传递到 Seaborn 函数。 - 示例数据:
python
import seaborn as sns import pandas as pd df = pd.DataFrame({ 'x': range(10), 'y': [2,4,1,5,3,6,2,4,7,8], 'category': ['A','B','A','B','A','B','A','B','A','B'] })
2. 基本设置
2.1 样式美化
python
sns.set_theme(style="darkgrid", palette="pastel", font="Arial") # 全局设置
sns.set_style("whitegrid") # 可选: darkgrid, whitegrid, dark, white, ticks
sns.despine() # 移除上方和右侧的边框线
2.2 颜色调色板
python
sns.color_palette("husl", 3) # 常用调色板: husl, Set2, viridis, coolwarm, magma
sns.set_palette("tab10") # 设置默认调色板
3. 常用图表类型
3.1 关系图 (Relational Plots)
- 散点图:
python
sns.scatterplot(data=df, x="x", y="y", hue="category", size="y", style="category")
- 折线图:
python
sns.lineplot(data=df, x="x", y="y", hue="category", markers=True, dashes=False)
3.2 分布图 (Distribution Plots)
- 直方图:
python
sns.histplot(data=df, x="y", kde=True, bins=5, hue="category")
- 核密度估计 (KDE):
python
sns.kdeplot(data=df, x="y", hue="category", fill=True)
- 箱线图:
python
sns.boxplot(data=df, x="category", y="y", hue="category")
- 小提琴图:
python
sns.violinplot(data=df, x="category", y="y", split=True, inner="quartile")
3.3 分类图 (Categorical Plots)
- 柱状图:
python
sns.barplot(data=df, x="category", y="y", ci=95, estimator=sum) # ci: 置信区间
- 计数图:
python
sns.countplot(data=df, x="category")
3.4 矩阵图 (Matrix Plots)
- 热力图:
python
corr_matrix = df.corr() sns.heatmap(corr_matrix, annot=True, cmap="coolwarm", linewidths=0.5)
- 聚类热力图:
python
sns.clustermap(corr_matrix, method="ward", cmap="viridis")
3.5 回归图 (Regression Plots)
python
sns.regplot(data=df, x="x", y="y", scatter_kws={"s": 50}, line_kws={"color": "red"})
sns.lmplot(data=df, x="x", y="y", hue="category", col="category") # 分面回归图
4. 高级功能
4.1 分面网格 (FacetGrid)
python
g = sns.FacetGrid(df, col="category", height=4)
g.map(sns.scatterplot, "x", "y")
g.add_legend()
4.2 多变量组合图
python
sns.pairplot(df, hue="category", diag_kind="kde", markers=["o", "s"])
4.3 联合分布图
python
sns.jointplot(data=df, x="x", y="y", kind="hex", marginal_kws={"color": "skyblue"})
5. 自定义与调整
5.1 标题与标签
python
import matplotlib.pyplot as plt
plt.title("Custom Title")
plt.xlabel("X Label")
plt.ylabel("Y Label")
plt.xticks(rotation=45)
plt.legend(title="Category", loc="upper right")
5.2 调整布局
python
plt.tight_layout() # 自动调整子图间距
plt.figure(figsize=(10,6)) # 设置画布大小
5.3 保存图像
python
plt.savefig("plot.png", dpi=300, bbox_inches="tight")
6. 常用参数速查
参数 | 用途 | 示例值 |
---|---|---|
hue | 按列分组颜色 | hue="category" |
size /style | 按列分组点大小/形状 | size="size_col" |
col /row | 分面网格的列/行 | col="time" |
palette | 指定调色板 | palette="viridis" |
alpha | 透明度 | alpha=0.7 |
ci | 置信区间(柱状图/误差线) | ci=95 或 ci=None |
kind | 图表类型(如 "kde" , "hist" , "box" ) | kind="kde" |
7. 示例代码合集
python
# 综合示例:多图组合
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset("tips")
plt.figure(figsize=(12,4))
plt.subplot(131)
sns.boxplot(data=tips, x="day", y="total_bill", hue="sex")
plt.subplot(132)
sns.scatterplot(data=tips, x="total_bill", y="tip", hue="time")
plt.subplot(133)
sns.histplot(data=tips, x="tip", kde=True)
plt.tight_layout()
plt.show()
以下是一份全面且可直接使用的 Plotly 和 Altair 绘图知识大全,涵盖常用功能及示例代码:
Plotly 使用大全
1. 安装与导入
python
# 安装
pip install plotly pandas
# 导入
import plotly.express as px
import plotly.graph_objects as go
2. 基本图表
2.1 散点图
python
fig = px.scatter(
data_frame=df,
x="x_column",
y="y_column",
color="category_column",
size="size_column",
hover_name="hover_column",
title="Scatter Plot"
)
fig.show()
2.2 折线图
python
fig = px.line(
df, x="time_column", y="value_column",
line_group="group_column",
color="category_column",
markers=True
)
fig.show()
2.3 柱状图
python
fig = px.bar(
df, x="category_column", y="value_column",
color="sub_category",
barmode="group" # 或 "stack"
)
fig.show()
2.4 直方图
python
fig = px.histogram(
df, x="numeric_column",
nbins=20, color="category_column",
marginal="rug" # 边缘子图:rug/box/violin
)
fig.show()
2.5 箱线图
python
fig = px.box(
df, x="category_column", y="value_column",
color="sub_category",
points="all" # 显示所有数据点
)
fig.show()
2.6 热力图
python
fig = px.imshow(
df.corr(),
color_continuous_scale="Viridis",
labels=dict(x="X Axis", y="Y Axis")
)
fig.show()
3. 高级功能
3.1 3D 图表
python
fig = px.scatter_3d(
df, x="x", y="y", z="z",
color="category",
size="size",
opacity=0.7
)
fig.show()
3.2 地图可视化
python
fig = px.choropleth(
df, locations="country_code",
color="value_column",
hover_name="country",
projection="natural earth"
)
fig.show()
3.3 动态交互
python
fig = px.scatter(df, x="x", y="y", animation_frame="year_column")
fig.update_layout(updatemenus=[dict(type="buttons", showactive=False)])
fig.show()
4. 自定义与布局
4.1 调整布局
python
fig.update_layout(
title="Custom Title",
xaxis_title="X Label",
yaxis_title="Y Label",
legend_title="Legend",
font=dict(size=12),
width=1000,
height=600
)
4.2 保存图表
python
fig.write_html("plot.html") # 保存为交互式HTML
fig.write_image("plot.png") # 需安装 kaleido
Altair 使用大全
1. 安装与导入
python
# 安装
pip install altair vega_datasets
# 导入
import altair as alt
from vega_datasets import data
2. 基本图表
2.1 散点图
python
alt.Chart(df).mark_circle(size=60).encode(
x="x_column:Q",
y="y_column:Q",
color="category_column:N",
tooltip=["x_column", "y_column"]
).interactive() # 启用缩放/平移
2.2 折线图
python
alt.Chart(df).mark_line().encode(
x="time_column:T",
y="value_column:Q",
color="category_column:N",
strokeDash="sub_category:N"
)
2.3 柱状图
python
alt.Chart(df).mark_bar().encode(
x="category_column:N",
y="sum(value_column):Q", # 聚合函数:sum/mean/count
color="sub_category:N"
)
2.4 直方图
python
alt.Chart(df).mark_bar().encode(
alt.X("numeric_column:Q", bin=True),
y="count()",
color="category_column:N"
)
2.5 箱线图
python
alt.Chart(df).mark_boxplot().encode(
x="category_column:N",
y="value_column:Q",
color="sub_category:N"
)
2.6 热力图
python
alt.Chart(df).mark_rect().encode(
x="x_column:O",
y="y_column:O",
color="value_column:Q"
)
3. 高级功能
3.1 分面图(Facet)
python
alt.Chart(df).mark_point().encode(
x="x:Q",
y="y:Q",
color="category:N"
).facet(
column="year_column:O"
)
3.2 图层叠加
python
base = alt.Chart(df).encode(x="x:Q", y="y:Q")
line = base.mark_line()
points = base.mark_circle()
(line + points).interactive()
3.3 交互筛选
python
brush = alt.selection_interval()
alt.Chart(df).mark_point().encode(
x="x:Q",
y="y:Q",
color=alt.condition(brush, "category:N", alt.value("lightgray"))
).add_selection(brush)
4. 自定义与导出
4.1 调整样式
python
chart = alt.Chart(df).mark_bar().encode(
x="x:Q",
y="y:Q"
).properties(
width=600,
height=400,
title="Custom Title"
).configure_axis(
labelFontSize=12,
titleFontSize=14
)
4.2 保存图表
python
chart.save("chart.html") # 保存为HTML
chart.save("chart.png", scale_factor=2) # 保存为PNG(需安装 selenium)
5. 参数速查表
Plotly 常用参数
参数 | 用途 | 示例值 |
---|---|---|
color | 颜色分组 | color="category" |
size | 点大小 | size="population" |
animation_frame | 动态帧(时间轴) | animation_frame="year" |
facet_col | 分面列 | facet_col="region" |
hover_data | 悬停显示字段 | hover_data=["GDP", "人口"] |
Altair 编码语法
编码通道 | 用途 | 示例值 |
---|---|---|
x /y | 坐标轴 | x="column:Q" |
color /fill | 颜色填充 | color="category:N" |
size /opacity | 大小/透明度 | size="value:Q" |
tooltip | 悬停提示信息 | tooltip=["name", "value"] |
row /column | 分面行/列 | row="year:O" |
6. 示例代码合集
Plotly 综合示例
python
import plotly.express as px
df = px.data.gapminder()
fig = px.scatter(
df.query("year==2007"),
x="gdpPercap",
y="lifeExp",
size="pop",
color="continent",
hover_name="country",
log_x=True,
size_max=60
)
fig.show()
Altair 综合示例
python
import altair as alt
from vega_datasets import data
cars = data.cars()
alt.Chart(cars).mark_circle().encode(
x='Horsepower:Q',
y='Miles_per_Gallon:Q',
color='Origin:N',
tooltip=['Name', 'Year']
).interactive().properties(
width=800,
title="汽车数据分布"
)
7. 核心对比
特性 | Plotly | Altair |
---|---|---|
语法风格 | 面向对象/函数式 | 声明式(链式调用) |
交互性 | 强(动态图表、复杂交互) | 中(基础缩放、悬停) |
学习曲线 | 中等 | 低(类似 Vega-Lite) |
适用场景 | 复杂交互、3D/地图可视化、Dash应用 | 快速生成静态/简单交互图表 |
数据格式 | 支持 DataFrame/数组 | 必须为 Pandas DataFrame |
emmm,matlab我还不会,之后再来吧,小红书真好玩喵