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
英文地址,請注明出處:http://en.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…