pyecharts可视化图表组合组件_Grid:打造专业数据仪表盘

pyecharts可视化图表组合组件_Grid:打造专业数据仪表盘

目录

  • pyecharts可视化图表组合组件_Grid:打造专业数据仪表盘
    • 引言
    • 图表1:Grid-Overlap-多X/Y轴示例
    • 代码解析
      • 1. 图表创建
      • 2. 多轴配置
      • 3. 图表重叠
      • 4. Grid布局
    • 效果与应用
    • 图表2:Grid-水平布局示例
    • 代码解析
      • 1. 独立图表创建
      • 2. 水平布局配置
      • 3. 标题与图例位置
      • 4. 简洁的代码结构
    • 效果与应用
    • 效果与应用
    • 图表3:Grid-多Y轴示例
    • 代码解析
      • 1. 数据复用
      • 2. 多Y轴配置
      • 3. 简化的图表结构
      • 4. 更紧凑的布局
    • 效果与应用
    • 图表4:Grid-垂直布局示例
    • 代码解析
      • 1. 独立图表创建
      • 2. 垂直布局配置
      • 3. 标题与图例位置
      • 4. 简洁的代码结构
    • 效果与应用
    • 图表5:Grid-地理坐标与柱状图组合示例
    • 代码解析
      • 1. 多类型图表组合
      • 2. 复杂布局配置
      • 3. 数据处理技巧
      • 4. 图例与视觉配置
    • 效果与应用
    • Grid组件使用总结

引言

在数据可视化领域,如何将多个图表有机地组合在一起,形成一个直观、专业的数据仪表盘,是一个常见的挑战。pyecharts库中的Grid组件为我们提供了一个强大的解决方案。通过Grid组件,我们可以灵活地排列多个图表,实现复杂的布局设计,打造出专业级的数据可视化仪表盘。在这里插入图片描述

本文将通过五个实用示例,详细介绍Grid组件的各种用法,从基础的多轴配置到复杂的图表组合,再到灵活的布局设计。每个示例都包含完整的Python代码、详细的代码解析和实际应用场景说明,帮助你全面掌握Grid组件的使用技巧,提升数据可视化水平。

让我们从第一个实战案例开始,学习如何创建包含多X/Y轴的Grid图表。

图表1:Grid-Overlap-多X/Y轴示例

这个示例展示了如何在Grid组件中组合柱状图和折线图,并配置多个X/Y轴来展示多维度数据。这种图表特别适合展示相关性数据,比如气候变化中的温度、降水量和蒸发量之间的关系。

from pyecharts import options as opts 
from pyecharts.charts import Bar, Grid, Line # 创建第一个柱状图
bar = ( Bar() .add_xaxis(["{}月".format(i) for i in range(1, 13)]) .add_yaxis( "蒸发量", [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3], yaxis_index=0, color="#d14a61", ) .add_yaxis( "降水量", [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3], yaxis_index=1, color="#5793f3", ) .extend_axis( yaxis=opts.AxisOpts( name="蒸发量", type_="value", min_=0, max_=250, position="right", axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts(color="#d14a61") ), axislabel_opts=opts.LabelOpts(formatter="{value} ml"), ) ) .extend_axis( yaxis=opts.AxisOpts( type_="value", name="温度", min_=0, max_=25, position="left", axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts(color="#675bba") ), axislabel_opts=opts.LabelOpts(formatter="{value} °C"), splitline_opts=opts.SplitLineOpts( is_show=True, linestyle_opts=opts.LineStyleOpts(opacity=1) ), ) ) .set_global_opts( yaxis_opts=opts.AxisOpts( name="降水量", min_=0, max_=250, position="right", offset=80, axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts(color="#5793f3") ), axislabel_opts=opts.LabelOpts(formatter="{value} ml"), ), title_opts=opts.TitleOpts(title="Grid-Overlap-多 X/Y 轴示例"), tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"), legend_opts=opts.LegendOpts(pos_left="25%"), ) 
) # 创建第一个折线图
line = ( Line() .add_xaxis(["{}月".format(i) for i in range(1, 13)]) .add_yaxis( "平均温度", [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2], yaxis_index=2, color="#675bba", label_opts=opts.LabelOpts(is_show=False), ) 
) # 创建第二个柱状图
bar1 = ( Bar() .add_xaxis(["{}月".format(i) for i in range(1, 13)]) .add_yaxis( "蒸发量 1", [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3], color="#d14a61", xaxis_index=1, yaxis_index=3, ) .add_yaxis( "降水量 2", [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3], color="#5793f3", xaxis_index=1, yaxis_index=4, ) .extend_axis( yaxis=opts.AxisOpts( name="蒸发量", type_="value", min_=0, max_=250, position="right", axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts(color="#d14a61") ), axislabel_opts=opts.LabelOpts(formatter="{value} ml"), ) ) .extend_axis( yaxis=opts.AxisOpts( type_="value", name="温度", min_=0, max_=25, position="left", axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts(color="#675bba") ), axislabel_opts=opts.LabelOpts(formatter="{value} °C"), splitline_opts=opts.SplitLineOpts( is_show=True, linestyle_opts=opts.LineStyleOpts(opacity=1) ), ) ) .set_global_opts( xaxis_opts=opts.AxisOpts(grid_index=1), yaxis_opts=opts.AxisOpts( name="降水量", min_=0, max_=250, position="right", offset=80, axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts(color="#5793f3") ), axislabel_opts=opts.LabelOpts(formatter="{value} ml"), ), tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"), legend_opts=opts.LegendOpts(pos_left="65%"), ) 
) # 创建第二个折线图
line1 = ( Line() .add_xaxis(["{}月".format(i) for i in range(1, 13)]) .add_yaxis( "平均温度 1", [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2], color="#675bba", label_opts=opts.LabelOpts(is_show=False), xaxis_index=1, yaxis_index=5, ) 
) # 重叠图表
overlap_1 = bar.overlap(line) 
overlap_2 = bar1.overlap(line1) # 创建Grid布局
grid = ( Grid(init_opts=opts.InitOpts(width="1200px", height="800px")) .add( overlap_1, grid_opts=opts.GridOpts(pos_right="58%"), is_control_axis_index=True ) .add(overlap_2, grid_opts=opts.GridOpts(pos_left="58%"), is_control_axis_index=True) #.render("grid_overlap_multi_xy_axis.html") 
) 
grid.render_notebook()

代码解析

这个示例展示了Grid组件的高级用法,让我们逐步分析其核心部分:

1. 图表创建

代码中创建了四个主要图表对象:

  • bar: 左侧的柱状图,展示蒸发量和降水量
  • line: 左侧的折线图,展示平均温度
  • bar1: 右侧的柱状图,展示另一组蒸发量和降水量数据
  • line1: 右侧的折线图,展示另一组平均温度数据

2. 多轴配置

这个示例的关键点是使用了多个X/Y轴来展示不同维度的数据:

  • 通过extend_axis方法添加了额外的Y轴
  • 使用yaxis_indexxaxis_index参数指定数据系列使用的轴
  • 对每个轴设置了不同的颜色、标签格式和位置

3. 图表重叠

使用overlap方法将折线图重叠在柱状图上:

  • overlap_1 = bar.overlap(line): 将温度折线图重叠在左侧柱状图上
  • overlap_2 = bar1.overlap(line1): 将温度折线图重叠在右侧柱状图上

4. Grid布局

最后,使用Grid组件将两个重叠图表放置在同一画布上:

  • pos_right="58%": 左侧图表占据画布的42%宽度
  • pos_left="58%": 右侧图表占据画布的42%宽度
  • is_control_axis_index=True: 允许Grid控制轴索引

效果与应用

在这里插入图片描述

核心优势:这种组合方式可以在一个视图中同时展示空间分布数据和具体分类数据,便于理解区域差异与具体数值的关系。地理坐标图提供了宏观视角,而柱状图则展示了详细对比。

适用场景

  • 区域销售数据展示
  • 人口分布与经济指标对比
  • 资源分布与利用效率分析
  • 任何需要结合空间和分类数据的场景

使用技巧:调整pos_toppos_rightpos_left参数时,需要考虑不同图表的大小和比例,确保布局平衡。对于地理坐标图,可以通过maptype参数切换不同的地图级别(如国家、省份、城市)。

图表2:Grid-水平布局示例

这个示例展示了如何在Grid组件中实现水平布局,将图表左右排列。这种布局方式特别适合展示两组并列的数据,便于横向对比分析。

from pyecharts import options as opts 
from pyecharts.charts import Grid, Line, Scatter 
from pyecharts.faker import Faker scatter = (Scatter().add_xaxis(Faker.choose()).add_yaxis("商家A", Faker.values()).add_yaxis("商家B", Faker.values()).set_global_opts(title_opts=opts.TitleOpts(title="Grid-Scatter"),legend_opts=opts.LegendOpts(pos_left="20%"),)
)
line = (Line().add_xaxis(Faker.choose()).add_yaxis("商家A", Faker.values()).add_yaxis("商家B", Faker.values()).set_global_opts(title_opts=opts.TitleOpts(title="Grid-Line", pos_right="5%"),legend_opts=opts.LegendOpts(pos_right="20%"),)
)grid = (Grid().add(scatter, grid_opts=opts.GridOpts(pos_left="55%")).add(line, grid_opts=opts.GridOpts(pos_right="55%"))#.render("grid_horizontal.html")
)
grid.render_notebook()

代码解析

这个示例展示了Grid组件的水平布局用法,让我们分析其核心特点:

1. 独立图表创建

代码中创建了两个独立的图表对象:

  • scatter: 散点图,展示商家A和商家B的数据分布
  • line: 折线图,展示相同商家的数据趋势

2. 水平布局配置

Grid的水平布局通过以下参数实现:

  • pos_left="55%": 散点图占据画布左侧55%的空间
  • pos_right="55%": 折线图占据画布右侧45%的空间
  • 这种配置实现了图表的左右排列,便于横向对比

3. 标题与图例位置

为了适应水平布局,两个图表的标题和图例位置分别进行了调整:

  • 散点图:标题居中,图例位于左侧20%
  • 折线图:标题位于右侧5%,图例位于右侧20%

4. 简洁的代码结构

这个示例的代码结构简洁明了,适合理解Grid的水平布局原理。通过Faker模块生成模拟数据,简化了代码示例。

效果与应用

在这里插入图片描述

核心优势:水平布局使图表在视觉上形成横向对比,特别适合展示两组并列的数据。这种布局方式充分利用了画布的水平空间,避免了垂直布局可能产生的过长页面。

适用场景

  • 数据分布与趋势对比
  • 不同算法或模型的结果对比
  • 任何需要左右对比的数据展示场景

使用技巧:调整pos_leftpos_right参数时,确保两个图表之间留出足够的空间,避免标题和图例相互重叠。对于复杂图表,可以结合pos_toppos_bottom参数进一步优化布局。

效果与应用

核心优势:这种多图表组合方式可以在一个视图中展示多个相关数据集,便于进行对比分析。多轴设计解决了不同量级数据展示的问题。

适用场景

  • 气象数据展示(温度、降水量、蒸发量等)
  • 经济指标分析(GDP、CPI、PMI等)
  • 销售数据对比(不同产品、不同地区)
  • 环境监测数据仪表盘

使用技巧:确保不同图表之间有明确的视觉区分(如颜色、线型),同时保持整体风格的一致性。对于多轴图表,清晰的标签和图例至关重要。

图表3:Grid-多Y轴示例

这个示例展示了如何在Grid组件中配置多个Y轴,实现不同量级数据的同时展示。通过这种方式,我们可以在一个图表中对比蒸发量、降水量和温度这三种不同单位的数据。

from pyecharts import options as opts 
from pyecharts.charts import Bar, Grid, Line x_data = ["{}月".format(i) for i in range(1, 13)] 
bar = ( Bar() .add_xaxis(x_data) .add_yaxis( "蒸发量", [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3], yaxis_index=0, color="#d14a61", ) .add_yaxis( "降水量", [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3], yaxis_index=1, color="#5793f3", ) .extend_axis( yaxis=opts.AxisOpts( name="蒸发量", type_="value", min_=0, max_=250, position="right", axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts(color="#d14a61") ), axislabel_opts=opts.LabelOpts(formatter="{value} ml"), ) ) .extend_axis( yaxis=opts.AxisOpts( type_="value", name="温度", min_=0, max_=25, position="left", axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts(color="#675bba") ), axislabel_opts=opts.LabelOpts(formatter="{value} °C"), splitline_opts=opts.SplitLineOpts( is_show=True, linestyle_opts=opts.LineStyleOpts(opacity=1) ), ) ) .set_global_opts( yaxis_opts=opts.AxisOpts( name="降水量", min_=0, max_=250, position="right", offset=80, axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts(color="#5793f3") ), axislabel_opts=opts.LabelOpts(formatter="{value} ml"), ), title_opts=opts.TitleOpts(title="Grid-多 Y 轴示例"), tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"), ) 
) line = ( Line() .add_xaxis(x_data) .add_yaxis( "平均温度", [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2], yaxis_index=2, color="#675bba", label_opts=opts.LabelOpts(is_show=False), ) 
) bar.overlap(line) 
grid = Grid() 
grid.add(bar, opts.GridOpts(pos_left="5%", pos_right="20%"), is_control_axis_index=True) 
#grid.render("grid_multi_yaxis.html") 
grid.render_notebook()

代码解析

这个示例展示了如何在单个Grid布局中配置多个Y轴,让我们分析其核心特点:

1. 数据复用

代码首先定义了x_data变量存储月份数据,然后在柱状图和折线图中复用这个变量,提高了代码的可维护性。

2. 多Y轴配置

与图表1类似,这个示例也使用了多个Y轴:

  • 右侧主Y轴:展示降水量(单位:ml)
  • 右侧次Y轴:展示蒸发量(单位:ml)
  • 左侧Y轴:展示温度(单位:°C)

3. 简化的图表结构

相比图表1,这个示例更加简洁:

  • 只使用了一个柱状图(bar)和一个折线图(line
  • 直接使用bar.overlap(line)将折线图重叠在柱状图上
  • Grid布局也更加简单,只包含一个图表区域

4. 更紧凑的布局

通过pos_left="5%", pos_right="20%"参数设置,使图表占据了更大的画布空间,布局更加紧凑。

效果与应用

在这里插入图片描述

核心优势:这种配置方式适合展示多种不同量级的数据,同时保持图表的简洁性。温度数据(°C)和降水量/蒸发量数据(ml)在量级上有很大差异,但通过多Y轴配置可以同时清晰展示。

适用场景

  • 气象数据展示
  • 环境监测指标分析
  • 经济数据对比(如GDP与CPI)
  • 任何需要同时展示不同量级数据的场景

使用技巧:对于只有一个主要图表区域的场景,可以直接使用bar.overlap(line)简化代码,无需创建单独的overlap对象。

图表4:Grid-垂直布局示例

这个示例展示了如何在Grid组件中实现垂直布局,将图表上下排列。这种布局方式特别适合展示具有时间序列关系或需要垂直对比的数据。

from pyecharts import options as opts 
from pyecharts.charts import Bar, Grid, Line 
from pyecharts.faker import Faker bar = (Bar().add_xaxis(Faker.choose()).add_yaxis("商家A", Faker.values()).add_yaxis("商家B", Faker.values()).set_global_opts(title_opts=opts.TitleOpts(title="Grid-Bar"))
)
line = (Line().add_xaxis(Faker.choose()).add_yaxis("商家A", Faker.values()).add_yaxis("商家B", Faker.values()).set_global_opts(title_opts=opts.TitleOpts(title="Grid-Line", pos_top="48%"),legend_opts=opts.LegendOpts(pos_top="48%"),)
)grid = (Grid().add(bar, grid_opts=opts.GridOpts(pos_bottom="60%")).add(line, grid_opts=opts.GridOpts(pos_top="60%"))#.render("grid_vertical.html")
)
grid.render_notebook()

代码解析

这个示例展示了Grid组件的垂直布局用法,让我们分析其核心特点:

1. 独立图表创建

代码中创建了两个独立的图表对象:

  • bar: 柱状图,展示商家A和商家B的数据对比
  • line: 折线图,展示相同商家的数据趋势

2. 垂直布局配置

Grid的垂直布局通过以下参数实现:

  • pos_bottom="60%": 柱状图占据画布底部40%的空间
  • pos_top="60%": 折线图占据画布顶部40%的空间
  • 中间留出20%的空间作为分隔,避免图表重叠

3. 标题与图例位置

为了适应垂直布局,折线图的标题和图例位置通过pos_top="48%"参数调整,确保它们显示在折线图区域内。

4. 简洁的代码结构

相比前两个示例,这个示例的代码更加简洁,适合初学者理解Grid的基本布局原理。

效果与应用

在这里插入图片描述

核心优势:垂直布局使图表在视觉上更加清晰,特别适合展示两组相关但不重叠的数据。这种布局方式充分利用了画布的垂直空间,避免了水平布局可能产生的拥挤感。

适用场景

  • 数据趋势对比(如销售额与增长率)
  • 时间序列分析(如月度数据与季度汇总)
  • 任何需要上下对比的数据展示场景

使用技巧:调整pos_bottompos_top参数时,确保两个图表之间留出足够的空间,避免标题和图例相互重叠。对于复杂图表,可以结合pos_leftpos_right参数进一步优化布局。

图表5:Grid-地理坐标与柱状图组合示例

这个示例展示了如何在Grid组件中组合地理坐标图和柱状图,实现空间数据与分类数据的同时展示。这种组合方式特别适合展示区域分布与具体数据的关系,如各省份销售数据与全国分布的对比。

from pyecharts import options as opts 
from pyecharts.charts import Bar, Geo, Grid 
from pyecharts.faker import Faker bar = (Bar().add_xaxis(Faker.choose()).add_yaxis("商家A", Faker.values()).add_yaxis("商家B", Faker.values()).set_global_opts(legend_opts=opts.LegendOpts(pos_left="20%"))
)
geo = (Geo().add_schema(maptype="china").add("geo", [list(z) for z in zip(Faker.provinces, Faker.values())]).set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(visualmap_opts=opts.VisualMapOpts(),title_opts=opts.TitleOpts(title="Grid-Geo-Bar"),)
)grid = (Grid().add(bar, grid_opts=opts.GridOpts(pos_top="50%", pos_right="75%")).add(geo, grid_opts=opts.GridOpts(pos_left="60%"))#.render("grid_geo_bar.html")
)
grid.render_notebook()

代码解析

这个示例展示了Grid组件如何组合不同类型图表的用法,让我们分析其核心特点:

1. 多类型图表组合

代码中创建了两种不同类型的图表对象:

  • bar: 柱状图,展示商家A和商家B的分类数据对比
  • geo: 地理坐标图,展示全国各省份的数据分布

2. 复杂布局配置

Grid的布局通过以下参数实现了复杂的空间分配:

  • pos_top="50%", pos_right="75%": 柱状图占据画布上方50%、右侧25%的空间
  • pos_left="60%": 地理坐标图占据画布左侧60%的空间
  • 这种配置实现了图表的交错布局,充分利用了画布空间

3. 数据处理技巧

地理坐标图的数据处理使用了zip函数将省份和数值配对:

  • [list(z) for z in zip(Faker.provinces, Faker.values())]
  • 这是处理地理数据的常用方式

4. 图例与视觉配置

  • 柱状图通过legend_opts=opts.LegendOpts(pos_left="20%")调整图例位置
  • 地理坐标图通过visualmap_opts=opts.VisualMapOpts()添加视觉映射,使数据分布更加直观
  • 关闭了地理坐标图的标签显示label_opts=opts.LabelOpts(is_show=False)以避免拥挤

效果与应用

在这里插入图片描述

核心优势:这种组合方式可以同时展示空间分布和具体数值,帮助用户建立数据的空间概念。地理坐标图提供宏观视角,柱状图提供具体对比,两者结合使数据分析更加全面。

适用场景

  • 区域销售数据展示
  • 人口分布与经济指标对比
  • 疫情数据可视化
  • 资源分布与利用效率分析

使用技巧:在组合不同类型图表时,注意调整布局参数以避免图表重叠。对于地理坐标图,可以通过visualmap_opts配置颜色渐变,使数据差异更加明显。同时,合理设置图例位置,确保图表信息清晰可读。

Grid组件使用总结

通过以上五个示例,我们全面了解了pyecharts中Grid组件的各种用法。总结起来,Grid组件具有以下优势:

  1. 灵活性强:支持水平、垂直、重叠等多种布局方式,可以根据需求自由组合多个图表
  2. 配置简单:通过简单的pos_left、pos_right、pos_top、pos_bottom等参数,即可实现复杂的布局
  3. 兼容性好:可以与pyecharts中的各种图表类型(如柱状图、折线图、地理坐标图等)无缝结合
  4. 可视化效果佳:通过合理的布局设计,可以打造出专业级的数据仪表盘

在使用Grid组件时,建议遵循以下最佳实践:

  • 明确布局需求,选择合适的布局方式
  • 合理设置图表之间的间距,避免重叠
  • 注意标题和图例的位置,确保信息清晰可读
  • 根据数据特点选择合适的图表类型组合
  • 保持代码结构清晰,提高可维护性

请继续关注本系列教程,获取更多pyecharts可视化技巧和实战经验!

如果你有任何问题或建议,欢迎在评论区留言讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/93962.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/93962.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【电气工程学习】

三极管中:集电极C,基极B,发射极E接线:棕正蓝负黑信号NPN开关输出的是我们的0V,也叫低电平PNP开关输出的是24V,也就是高电平(NPN开关导通时,相当于把输出端“拉”到0V(低电平),称为“…

【嵌入式】CAN通信

CAN 总线最初由博世于1980年代为汽车行业开发,能够简化复杂的布线网络,还确保可靠和安全的数据传输。 1.CAN技术解释 CAN网络中的每个节点,都是平等的,没有主次之分,这一点和SPI和I2C不同。每个节点都可以在需要的时…

Apache ShenYu网关与Nacos的关联及如何配合使用

Apache ShenYu 网关与 Nacos 之间的关系可以概括为 “协作互补”:Nacos 作为 服务注册与配置中心,为 ShenYu 提供动态的服务发现和配置管理能力,而 ShenYu 作为 流量网关,依赖 Nacos 实现路由信息的动态更新和实时生效。以下是详细解析: 1. 核心关系图解 拉取服务列表/路…

【CPP】一个CPP的Library(libXXXcore)和测试程序XXX_main的Demo

一个CPP的Library和测试程序Demo 1. 思路描述 目录结构 总控CMakeList.txt文件 2. Library代码实现 2.1 XXXLib.hpp文件(对外的接口定义文件)和XXXLib.cpp文件 2.1.1 XXXLib.hpp文件 2.1.2 XXXLib.cpp文件 2.2 CXXXLibApi.hpp文件和CXXXLibApi.cpp文件(内部的API基类) 2.2.1 CX…

【YashanDB认证】学习YashanDB的探索之路:从入门到实践

在国产数据库蓬勃发展的浪潮中,选择了YashanDB作为技术学习的切入点。这不仅让我深入了解了数据库的核心技术,也让我深刻体会到国产数据库在性能、可靠性和生态适配上的创新价值。以下是我在学习YashanDB过程中的经验与感悟。 一、YashanDB基础介绍 Ya…

element UI 和 element plus 在组件上有哪些不同

Element UI 和 Element Plus 都是基于 Vue 的桌面端 UI 组件库,由同一团队(饿了么前端团队)开发和维护。Element Plus 是 Element UI 的升级版,专为 Vue 3 设计,而 Element UI 仅支持 Vue 2。以下是它们在组件层面的主…

【3D重建技术】如何基于遥感图像和DEM等数据进行城市级高精度三维重建?

城市级高精度三维重建是融合多源空间数据(遥感图像、DEM、GIS矢量等)、计算机视觉与地理信息处理技术的复杂过程,核心目标是构建包含“地形地物(建筑、道路、植被等)”的真实、高精度三维场景。其流程可分为数据准备、…

【unitrix数间混合计算】3.4 无符号小数部分标记trait(bin_unsigned.rs)

一、源码 这段代码定义了一个类型级二进制小数系统,用于在编译时表示和验证二进制小数部分的有效性。 use crate::number::{F0, BFrac, Bit};/// 标记合法的二进制小数部分类型 pub trait BinFrac: Copy Default static {}// 空小数部分(表示值为0&…

从一次 DDoS 的“死亡回放”看现代攻击链的进化

本文记录的是作者上周在测试环境真实踩到的坑。为了让读者能复现并亲手体验防御思路,文末给出了一份最小可运行的 Go 脚本,支持本地压测 日志回放,方便对比加防护前后的差异。攻击现场还原 周一凌晨 2:14,监控群里突然弹出告警&a…

LeetCode热题100--101. 对称二叉树--简单

1. 题目 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1:输入:root [1,2,2,3,4,4,3] 输出:true 示例 2:输入:root [1,2,2,null,3,null,3] 输出:false 2. 题解 /*** Definition for…

Pub/Sub是什么意思

Pub/Sub(发布/订阅模式)​​ 是一种异步消息通信范式,用于分布式系统中不同组件之间的解耦通信。它的核心思想是将消息的发送方(发布者)​​ 和接收方(订阅者)​​ 分离,通过一个中间…

Redisson3.14.1及之后连接阿里云redis代理模式,使用分布式锁:ERR unknown command ‘WAIT‘

文章目录一、问题背景1、问题原因2、阿里云对Redisson的支持二、解决方案1、继续使用Redisson3.14.0版本2、阿里云redis改为直连模式3、升级Redisson版本到 3.47.0一、问题背景 1、问题原因 阿里云Redis分直连和代理模式,其中代理模式是不支持WAIT命令的。 目前尝…

Linux: RAID(磁盘冗余阵列)配置全指南

Linux:RAID(磁盘冗余阵列)配置一、RAID 核心概念 RAID(Redundant Array of Independent Disks,磁盘冗余阵列)通过将多个物理磁盘组合为一个逻辑存储设备,实现提升读写性能、增强数据安全性或平衡…

《GPT-OSS 模型全解析:OpenAI 回归开源的 Mixture-of-Experts 之路》

目录 一、引言 二、GPT-OSS 模型简介 1. 版本与定位 2. 架构设计与技术亮点 2.1 Mixture-of-Experts(MoE)架构 2.2 高效推理机制与优化技术 2.3 模型对比 三、模型部署 1. 安装相关依赖 1.1 uv 安装 1.2 conda 安装 1.3 Transformers 运行 g…

【力扣热题100】双指针—— 接雨水

题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 注意:答案中不可以包含重复的三元组。输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由…

51单片机拼接板(开发板积木)

一、前言 1.1 背景 读书那会儿(2013年左右)网上接了很多51单片机的设计。 当时有个痛点: 每张板子都是定制的,画板子,打样,写代码需要花费很多时间。 希望有一张板子,能够实现绝大多数单片机的功能&#xf…

使用segment-anything将目标检测label转换为语义分割label

使用segment-anything将目标检测label转换为语义分割label一、segment-anything简介二、segment-anything安装2.1安装方法2.2预训练模型下载三、将目标检测label转换为语义分割label3.1示例代码3.2代码说明一、segment-anything简介 segment-anything是facebookresearch团队开…

【unitrix数间混合计算】3.3 无符号整数标记trait(bin_unsigned.rs)

一、源码 这段代码是用 Rust 语言实现的一个类型级无符号二进制整数系统,通过类型系统在编译时表示和操作二进制数字。这是一种典型的"类型级编程"(type-level programming)技术。 use crate::number::{U0, Bin, Bit, BinInt};/// …

Python基本语法总结

1.类(Class)在Python中类(Class)是面向对象编程(OOP)的核心概念。1.1.类的基本定义最简单的类class Cat:"""这是一个最简单的类"""pass #创建实例 obj Cat()包含方法的类cl…

数据结构05(Java)-- ( 归并排序实质,归并排序扩展问题:小和问题)

前言 本文为本小白🤯学习数据结构的笔记,将以算法题为导向,向大家更清晰的介绍数据结构相关知识(算法题都出自🙌B站马士兵教育——左老师的课程,讲的很好,对于想入门刷题的人很有帮助&#x1f4…