扩散模型对抗样本经典baselines
1. 流图数据的河流如果把传统的堆叠面积图想象成一块块整齐堆叠的积木那么流图就像一条蜿蜒流淌的河流河道的宽窄变化自然流畅波峰波谷过渡平滑。它特别适合展示多个类别数据随时间的变化趋势尤其是当你想强调整体流动感和各部分的相对比例变化时。流图的核心思想是将传统的堆叠面积图进行平滑处理。在matplotlib中我们可以使用fill_between函数结合样条插值来创建平滑的边缘。关键在于将堆叠的数据进行累积然后对累积边界进行平滑处理。# 数据准备x np.linspace(0, 10, 100)# 构造三组波浪数据y1 2 np.sin(x) # 基础波动y2 2 np.cos(x - 1.5) # 错位波动y3 2 np.sin(x 2) # 再次错位# 省略 ...# 绘图设置fig, (ax1, ax2) plt.subplots(1, 2, figsize(14, 6))# --- 左图普通堆叠面积图 (baselinezero) ---ax1.stackplot(x, y_data, labelslabels, colorscolors, baselinezero, alpha0.8)# 省略 ...# --- 右图流图 (baselinesym) ---# sym 表示对称中心布局ax2.stackplot(x, y_data, labelslabels, colorscolors, baselinesym, alpha0.8)ax2.axhline(0, colorblack, ls--, alpha0.1) # 画一条中心参考线# 省略 ...# 去除右图边框增加流动感for spine in ax2.spines.values():spine.set_visible(False)plt.tight_layout()plt.show()流图解决了一个视觉错觉问题在普通堆叠面积图中上面的数据层会因为下面数据层的起伏而被迫“扭曲”很难看出它原本的形状。流图通过中心布局减少了这种扭曲非常适合展示随时间变化的趋势和不同类别权重的波动这种有机的形态还能给读者带来极强的审美愉悦感。2. 地平线图数据的群山想象一下远处的地平线上有一排连绵的山脉每座山的高度代表一个数据值。地平线图就是这样一种可视化技术它将时间序列数据压缩在一个很小的垂直空间内通过颜色和分层来展示数据的变化。特别适合在有限空间内展示多个时间序列的对比。地平线图的核心思想是数据分层和颜色渐变。它将数据值分成若干层通常是2-3层每层用一种颜色表示。当数据值超过一层时就用更深的颜色或不同的颜色填充。这样可以在很小的垂直空间内展示很大的数据范围。from datetime import timedelta# 生成模拟数据过去10年五大科技公司的股价波动np.random.seed(42)# 生成日期范围过去10年每月一个数据点dates pd.date_range(2013-01-01, 2023-01-01, freqME)companies [苹果, 谷歌, 微软, 亚马逊, Meta]# 生成各公司的股价模拟数据标准化到相似范围data {}for company in companies:# 基础趋势每家公司有不同的增长趋势但最终都在70-90范围内# 省略 ...# 转换为DataFramedf pd.DataFrame(data, indexdates)# 创建对比图表fig, axes plt.subplots(2, 1, figsize(14, 10))# 传统堆叠面积图 colors [#FF6B6B, #4ECDC4, #45B7D1, #FFD166, #9B5DE5]# 为堆叠面积图重新归一化数据df_normalized df.div(df.sum(axis1), axis0) * 100y_cumulative np.zeros(len(df))for i, company in enumerate(companies):axes[0].fill_between(df.index,y_cumulative,y_cumulative df_normalized[company].values,colorcolors[i],alpha0.7,labelcompany,edgecolorwhite,linewidth0.5,)y_cumulative df_normalized[company].values# 省略 ...# 地平线图股价波动对比 # 生成股价变化百分比数据更能体现波动对比np.random.seed(42)price_changes {}for company in companies:# 生成均值附近波动的变化数据# 省略 ...# 关键参数定义“波段”BAND_HEIGHT 3.0 # 每个颜色波段代表的变化率幅度 (%)NUM_BANDS 3 # 正负方向各使用的波段层数df pd.DataFrame(price_changes, indexdates)# 为每家公司计算并绘制地平线for i, company in enumerate(companies):# 公司的基准Y轴位置水平线# 省略 ...# 分层与绘制从第1层到第NUM_BANDS层for band in range(NUM_BANDS):# --- 处理正偏差上涨---# 计算当前层的数据偏差值减去已绘制层的高度并限制在本层高度内# 省略 ...# --- 处理负偏差下跌---# 对负值取绝对值进行类似处理# 省略 ...# 美化图表# 省略 ...# 6. 添加图例import matplotlib.patches as mpatcheslegend_patches []# 省略 ...plt.tight_layout(h_pad5)plt.show()地平线图是空间利用大师。当你有 20 个股票或者 50 个城市的温度需要放在一张图里对比时普通的面积图会挤成一团乱麻。地平线图可以将每个序列压缩成一个窄窄的横条但在保持视觉分辨率的同时还能让你看清极值通过深颜色。3. 总结数据可视化不仅是科学也是艺术。流图和地平线图这两种面积图变体分别从流动之美和空间效率两个角度拓展了面积图的可能性。它们证明了通过对基础图表的创意改造我们可以让数据讲述更丰富、更生动的故事。诤啄瞥堪
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2477315.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!