主頁 > 軟體設計 > Python繪制柱狀圖之可視化神器pyecharts(二)

Python繪制柱狀圖之可視化神器pyecharts(二)

2021-02-20 11:36:52 軟體設計

目錄

主題介紹

圖表引數

主題詳解

柱狀圖模板系列

海量資料柱狀圖影片展示

收入支出柱狀圖(適用于記賬)

我們在日常的生活中,有收入也有支出,這個模板就是把收入和支出直觀的展示在讀者面前,

三維資料疊加

柱狀圖與折線圖多維展示(同屏展示)

單列多維資料展示

3D柱狀圖

每文一語


主題介紹

pyecharts里面有很多的主題可以供我們選擇,我們可以根據自己的需要完成主題的配置,這樣就告別了軟體的限制,可以隨意的發揮自己的藝術細胞了,

圖表引數

'''
def add_yaxis(
    # 系列名稱,用于 tooltip 的顯示,legend 的圖例篩選,
    series_name: str,

    # 系列資料
    y_axis: Sequence[Numeric, opts.BarItem, dict],

    # 是否選中圖例
    is_selected: bool = True,

    # 使用的 x 軸的 index,在單個圖表實體中存在多個 x 軸的時候有用,
    xaxis_index: Optional[Numeric] = None,

    # 使用的 y 軸的 index,在單個圖表實體中存在多個 y 軸的時候有用,
    yaxis_index: Optional[Numeric] = None,

    # 是否啟用圖例 hover 時的聯動高亮
    is_legend_hover_link: bool = True,

    # 系列 label 顏色
    color: Optional[str] = None,

    # 是否顯示柱條的背景色,通過 backgroundStyle 配置背景樣式,
    is_show_background: bool = False,

    # 每一個柱條的背景樣式,需要將 showBackground 設定為 true 時才有效,
    background_style: types.Union[types.BarBackground, dict, None] = None,

    # 資料堆疊,同個類目軸上系列配置相同的 stack 值可以堆疊放置,
    stack: Optional[str] = None,

    # 柱條的寬度,不設時自適應,
    # 可以是絕對值例如 40 或者百分數例如 '60%',百分數基于自動計算出的每一類目的寬度,
    # 在同一坐標系上,此屬性會被多個 'bar' 系列共享,此屬性應設定于此坐標系中最后一個 'bar' 系列上才會生效,并且是對此坐標系中所有 'bar' 系列生效,
    bar_width: types.Union[types.Numeric, str] = None,

    # 柱條的最大寬度,比 barWidth 優先級高,
    bar_max_width: types.Union[types.Numeric, str] = None,

    # 柱條的最小寬度,在直角坐標系中,默認值是 1,否則默認值是 null,比 barWidth 優先級高,
    bar_min_width: types.Union[types.Numeric, str] = None,

    # 柱條最小高度,可用于防止某資料項的值過小而影響互動,
    bar_min_height: types.Numeric = 0,

    # 同一系列的柱間距離,默認為類目間距的 20%,可設固定值
    category_gap: Union[Numeric, str] = "20%",

    # 不同系列的柱間距離,為百分比(如 '30%',表示柱子寬度的 30%),
    # 如果想要兩個系列的柱子重疊,可以設定 gap 為 '-100%',這在用柱子做背景的時候有用,
    gap: Optional[str] = "30%",

    # 是否開啟大資料量優化,在資料圖形特別多而出現卡頓時候可以開啟,
    # 開啟后配合 largeThreshold 在資料量大于指定閾值的時候對繪制進行優化,
    # 缺點:優化后不能自定義設定單個資料項的樣式,
    is_large: bool = False,

    # 開啟繪制優化的閾值,
    large_threshold: types.Numeric = 400,

    # 使用 dimensions 定義 series.data 或者 dataset.source 的每個維度的資訊,
    # 注意:如果使用了 dataset,那么可以在 dataset.source 的第一行/列中給出 dimension 名稱,
    # 于是就不用在這里指定 dimension,
    # 但是,如果在這里指定了 dimensions,那么 ECharts 不再會自動從 dataset.source 的第一行/列中獲取維度資訊,
    dimensions: types.Union[types.Sequence, None] = None,

    # 當使用 dataset 時,seriesLayoutBy 指定了 dataset 中用行還是列對應到系列上,也就是說,系列“排布”到 dataset 的行還是列上,可取值:
    # 'column':默認,dataset 的列對應于系列,從而 dataset 中每一列是一個維度(dimension),
    # 'row':dataset 的行對應于系列,從而 dataset 中每一行是一個維度(dimension),
    series_layout_by: str = "column",

    # 如果 series.data 沒有指定,并且 dataset 存在,那么就會使用 dataset,
    # datasetIndex 指定本系列使用那個 dataset,
    dataset_index: types.Numeric = 0,

    # 是否裁剪超出坐標系部分的圖形,柱狀圖:裁掉所有超出坐標系的部分,但是依然保留柱子的寬度
    is_clip: bool = True,

    # 柱狀圖所有圖形的 zlevel 值,
    z_level: types.Numeric = 0,

    # 柱狀圖組件的所有圖形的z值,控制圖形的前后順序,
    # z值小的圖形會被z值大的圖形覆寫,
    # z相比zlevel優先級更低,而且不會創建新的 Canvas,
    z: types.Numeric = 2,

    # 標簽配置項,參考 `series_options.LabelOpts`
    label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(),

    # 標記點配置項,參考 `series_options.MarkPointOpts`
    markpoint_opts: Union[opts.MarkPointOpts, dict, None] = None,

    # 標記線配置項,參考 `series_options.MarkLineOpts`
    markline_opts: Union[opts.MarkLineOpts, dict, None] = None,

    # 提示框組件配置項,參考 `series_options.TooltipOpts`
    tooltip_opts: Union[opts.TooltipOpts, dict, None] = None,

    # 圖元樣式配置項,參考 `series_options.ItemStyleOpts`
    itemstyle_opts: Union[opts.ItemStyleOpts, dict, None] = None,

    # 可以定義 data 的哪個維度被編碼成什么,
    encode: types.Union[types.JSFunc, dict, None] = None,
)

'''

我們可以進行圖表引數的配置,完成我們需要的結果展示,

主題詳解

下面列舉了比較詳細的主題風格,隨意搭配,碰撞出不一樣的火花!

from pyecharts.globals import ThemeType

help(ThemeType)
"""
{"theme": ThemeType.MACARONS}

BUILTIN_THEMES = ['light', 'dark', 'white']
 |  
 |  CHALK = 'chalk' #粉筆風
 |  
 |  DARK = 'dark'  #暗黑風
 |  
 |  ESSOS = 'essos' #厄索斯大陸
 |  
 |  INFOGRAPHIC = 'infographic' #資訊圖
 |  
 |  LIGHT = 'light' #明亮風格
 |  
 |  MACARONS = 'macarons' #馬卡龍
 |  
 |  PURPLE_PASSION = 'purple-passion' #紫色激情
 |  
 |  ROMA = 'roma' #石榴
 |  
 |  ROMANTIC = 'romantic' #浪漫風
 |  
 |  SHINE = 'shine' #閃耀風
 |  
 |  VINTAGE = 'vintage' #復古風
 |  
 |  WALDEN = 'walden' #瓦爾登湖
 |  
 |  WESTEROS = 'westeros' #維斯特洛大陸
 |  
 |  WHITE = 'white' #潔白風
 |  
 |  WONDERLAND = 'wonderland' #仙境
"""

柱狀圖模板系列

海量資料柱狀圖影片展示

非常多的資料集,我們需要展示的話,我們可以利用這個模板進行展示,下面由于資料量過多我就不展示全部的資料了,

import pyecharts.options as opts
from pyecharts.charts import Bar


category = ["類目{}".format(i) for i in range(0, 100)]
red_bar = ['資料集非常多!!!!']
(
    Bar(init_opts=opts.InitOpts(width="1500px", height="700px"))
        .add_xaxis(xaxis_data=category)
        .add_yaxis(
        series_name="系列1", y_axis=red_bar, label_opts=opts.LabelOpts(is_show=False)
    )
        .add_yaxis(
        series_name="系列2",
        y_axis=blue_bar,
        label_opts=opts.LabelOpts(is_show=False),
    )
        .set_global_opts(
        title_opts=opts.TitleOpts(title="柱狀圖影片延遲"),
        xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=False)),
        yaxis_opts=opts.AxisOpts(
            axistick_opts=opts.AxisTickOpts(is_show=True),
            splitline_opts=opts.SplitLineOpts(is_show=True),
        ),
    )
        .render("柱狀圖影片延遲.html")
)
print("圖表已生成!請查收!")

收入支出柱狀圖(適用于記賬)

我們在日常的生活中,有收入也有支出,這個模板就是把收入和支出直觀的展示在讀者面前,


from pyecharts.charts import Bar
from pyecharts import options as opts

# 一般不適用

x_data = [f"11月{str(i)}日" for i in range(1, 12)]
y_total = [0, 900, 1245, 1530, 1376, 1376, 1511, 1689, 1856, 1495, 1292]
y_in = [900, 345, 393, "-", "-", 135, 178, 286, "-", "-", "-"]
y_out = ["-", "-", "-", 108, 154, "-", "-", "-", 119, 361, 203]


bar = (
    Bar()
    .add_xaxis(xaxis_data=x_data)
    .add_yaxis(
        series_name="",
        y_axis=y_total,
        stack="總量",
        itemstyle_opts=opts.ItemStyleOpts(color="rgba(0,0,0,0)"),
    )
    .add_yaxis(series_name="收入", y_axis=y_in, stack="總量")
    .add_yaxis(series_name="支出", y_axis=y_out, stack="總量")
    .set_global_opts(yaxis_opts=opts.AxisOpts(type_="value"))
    .render("收入支出柱狀圖.html")
)

print("圖表已生成!請查收!")

三維資料疊加

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker

c = (
    Bar()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家A", Faker.values(), stack="stack1")
    .add_yaxis("商家B", Faker.values(), stack="stack1")
    .add_yaxis("商家C", Faker.values(),stack="stack1")
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title="標題"))
    .render("三維資料折疊.html")
)
print("圖表已生成!查收!")

柱狀圖與折線圖多維展示(同屏展示)

柱狀圖里面也有折線圖,適合我們在特定情況下進行資料展示,效果還是比較的直觀,方便我們可以直接get到資料的價值,

import pyecharts.options as opts
from pyecharts.charts import Bar, Line

x_data = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]

bar = (
    Bar(init_opts=opts.InitOpts(width="1100px", height="600px"))
        .add_xaxis(xaxis_data=x_data)
        .add_yaxis(
        series_name="蒸發量",
        y_axis=[
            2.0,
            4.9,
            7.0,
            23.2,
            25.6,
            76.7,
            135.6,
            162.2,
            32.6,
            20.0,
            6.4,
            3.3,
        ],
        label_opts=opts.LabelOpts(is_show=False),
    )
        .add_yaxis(
        series_name="降水量",
        y_axis=[
            2.6,
            5.9,
            9.0,
            26.4,
            28.7,
            70.7,
            175.6,
            182.2,
            48.7,
            18.8,
            6.0,
            2.3,
        ],
        label_opts=opts.LabelOpts(is_show=False),
    )
        .extend_axis(
        yaxis=opts.AxisOpts(
            name="溫度",
            type_="value",
            min_=0,
            max_=25,
            interval=5,
            axislabel_opts=opts.LabelOpts(formatter="{value} °C"),
        )
    )
        .set_global_opts(
        tooltip_opts=opts.TooltipOpts(
            is_show=True, trigger="axis", axis_pointer_type="cross"
        ),
        xaxis_opts=opts.AxisOpts(
            name='月份',
            name_location='middle',
            name_gap=30,  # 標簽與軸線之間的距離,默認為20,最好不要設定20
            name_textstyle_opts=opts.TextStyleOpts(
                font_family='Times New Roman',
                font_size=16,  # 標簽字體大小
                # type_="category",
                # axispointer_opts=opts.AxisPointerOpts(is_show=True, type_="shadow"),
            )),
        yaxis_opts=opts.AxisOpts(
            name="水量",
            type_="value",
            min_=0,
            max_=250,
            interval=50,
            axislabel_opts=opts.LabelOpts(formatter="{value} ml"),
            axistick_opts=opts.AxisTickOpts(is_show=True),
            splitline_opts=opts.SplitLineOpts(is_show=True),
        ),
    )
)

line = (
    Line()
        .add_xaxis(xaxis_data=x_data)
        .add_yaxis(
        series_name="平均溫度",
        yaxis_index=1,
        y_axis=[2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2],
        label_opts=opts.LabelOpts(is_show=False),
    )
)

bar.overlap(line).render("折線圖-柱狀圖多維展示.html")

print("圖表已生成!請查收!")

import pyecharts.options as opts
from pyecharts.charts import Bar, Line


colors = ["#5793f3", "#d14a61", "#675bba"]
x_data = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]
legend_list = ["蒸發量", "降水量", "平均溫度"]
evaporation_capacity = [
    2.0,
    4.9,
    7.0,
    23.2,
    25.6,
    76.7,
    135.6,
    162.2,
    32.6,
    20.0,
    6.4,
    3.3,
]
rainfall_capacity = [
    2.6,
    5.9,
    9.0,
    26.4,
    28.7,
    70.7,
    175.6,
    182.2,
    48.7,
    18.8,
    6.0,
    2.3,
]
average_temperature = [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2]

bar = (
    Bar(init_opts=opts.InitOpts(width="1100px", height="600px"))
    .add_xaxis(xaxis_data=x_data)
    .add_yaxis(
        series_name="蒸發量",
        y_axis=evaporation_capacity,
        yaxis_index=0,
        color=colors[1],
    )
    .add_yaxis(
        series_name="降水量", y_axis=rainfall_capacity, yaxis_index=1, color=colors[0]
    )
    .extend_axis(
        yaxis=opts.AxisOpts(
            name="蒸發量",
            type_="value",
            min_=0,
            max_=250,
            position="right",
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color=colors[1])
            ),
            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=colors[2])
            ),
            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(
            type_="value",
            name="降水量",
            min_=0,
            max_=250,
            position="right",
            offset=80,
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color=colors[0])
            ),
            axislabel_opts=opts.LabelOpts(formatter="{value} ml"),
        ),
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
    )
)

line = (
    Line()
    .add_xaxis(xaxis_data=x_data)
    .add_yaxis(
        series_name="平均溫度", y_axis=average_temperature, yaxis_index=2, color=colors[2]
    )
)

bar.overlap(line).render("多維展示顯示資料.html")

單列多維資料展示

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.commons.utils import JsCode
from pyecharts.globals import ThemeType

'''
功能:定義多個串列,一個單列柱狀圖里面可以顯示多個產品的數量(顯示各自所占比例)達到一圖多效果展示
應用場景:比如有3個產品,分別在星期一到星期天有不同的銷售額,每一天三個不同的產品也都有各自的銷售額
          需要同時展示出這些資訊,并分析出每一個產品在一天中所占比例是多少
涉及知識:串列里面嵌套多個字典
'''
list2 = [
    {"value": 12, "percent": 12 / (12 + 3)},  # 對于各自的值,同時對于各自的百分比
    {"value": 23, "percent": 23 / (23 + 21)},
    {"value": 33, "percent": 33 / (33 + 5)},
    {"value": 3, "percent": 3 / (3 + 52)},
    {"value": 33, "percent": 33 / (33 + 43)},
    {"value": 45, "percent": 45 / (45 + 3)},
    {"value": 23, "percent": 23 / (23 + 13)},
]

list3 = [
    {"value": 3, "percent": 3 / (12 + 3)},
    {"value": 21, "percent": 21 / (23 + 21)},
    {"value": 5, "percent": 5 / (33 + 5)},
    {"value": 52, "percent": 52 / (3 + 52)},
    {"value": 43, "percent": 43 / (33 + 43)},
    {"value": 3, "percent": 45 / (45 + 3)},
    {"value": 13, "percent": 13 / (23 + 13)},
]

# 可以添加多個串列
# list4=[]

c = (
    Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
        .add_xaxis([1, 2, 3, 4, 5, 6, 7])  # 橫坐標變數引數
        # 資料堆疊,同個類目軸上系列配置相同的 stack 值可以堆疊放置
        # 同一系列的柱間距離,默認為類目間距的 20%,可設固定值
        .add_yaxis("產品1", list2, stack="stack1", category_gap="50%")
        .add_yaxis("產品2", list3, stack="stack1", category_gap="50%")
        .set_series_opts(
        label_opts=opts.LabelOpts(
            position="right",
            formatter=JsCode(
                "function(x){return Number(x.data.percent * 100).toFixed() + '%';}"
            ),
        )
    )
        # X Y軸的系列配置
        .set_global_opts(title_opts=opts.TitleOpts(title="標題"),
                         xaxis_opts=opts.AxisOpts(
                             name='星期',
                             name_location='middle',
                             name_gap=30,  # 標簽與軸線之間的距離,默認為20,最好不要設定20
                             name_textstyle_opts=opts.TextStyleOpts(
                                 font_family='Times New Roman',
                                 font_size=16  # 標簽字體大小
                             )),
                         yaxis_opts=opts.AxisOpts(
                             name='數量',
                             name_location='middle',
                             name_gap=30,
                             name_textstyle_opts=opts.TextStyleOpts(
                                 font_family='Times New Roman',
                                 font_size=16
                                 # font_weight='bolder',
                             )),
                         # toolbox_opts=opts.ToolboxOpts()  # 工具選項
                         )
        .render("單列多維占比層次柱狀圖.html")
)
print("圖表已生成!請查收!")

3D柱狀圖

這類圖表一般不會用到,但是pyecharts也可以生成這種炫酷的3D模板,來看看吧!

上述3D圖形都可以通過滑鼠進行控制,翻轉

import random

from pyecharts import options as opts
from pyecharts.charts import Bar3D

x_data = y_data = list(range(10))


def generate_data():
    data = []
    for j in range(10):
        for k in range(10):
            value = random.randint(0, 9)
            data.append([j, k, value * 2 + 4])
    return data


bar3d = Bar3D(init_opts=opts.InitOpts(width="1500px", height="700px"))
for _ in range(10):
    bar3d.add(
        "",
        generate_data(),
        shading="lambert",
        xaxis3d_opts=opts.Axis3DOpts(data=x_data, type_="value"),
        yaxis3d_opts=opts.Axis3DOpts(data=y_data, type_="value"),
        zaxis3d_opts=opts.Axis3DOpts(type_="value"),
    )
bar3d.set_global_opts(title_opts=opts.TitleOpts("Bar3D-堆疊柱狀圖示例"))
bar3d.set_series_opts(**{"stack": "stack"})
bar3d.render("3D堆疊柱狀圖.html")

import random

from pyecharts import options as opts
from pyecharts.charts import Bar3D
from pyecharts.faker import Faker


data = [(i, j, random.randint(0, 12)) for i in range(6) for j in range(24)]
c = (
    Bar3D(init_opts=opts.InitOpts(width="1500px", height="700px"))
    .add(
        "",
        [[d[1], d[0], d[2]] for d in data],
        xaxis3d_opts=opts.Axis3DOpts(Faker.clock, type_="category"),
        yaxis3d_opts=opts.Axis3DOpts(Faker.week_en, type_="category"),
        zaxis3d_opts=opts.Axis3DOpts(type_="value"),
    )
    .set_global_opts(
        visualmap_opts=opts.VisualMapOpts(max_=20),
        title_opts=opts.TitleOpts(title="Bar3D-基本示例"),
    )
    .render("3D柱狀圖_1.html")
)

柱狀圖的模板大全差不多都是這些了,下期文章我們一起領略折線圖的魅力吧!

每文一語

當你有了光明和希望,微風都是暖暖的

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/261426.html

標籤:其他

上一篇:SpringMVC 請求處理流程

下一篇:Android:View的getLocalVisibleRect()和getGlobalVisibleRect()的區別

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more