【Python百日进阶-数据分析】Day127 - plotly折线图:px.line()/go.Scatter()实例

news2024/11/29 22:33:21

文章目录

  • 四、实例
    • 4.1 px的折线图
      • 4.1.1 加拿大的预期寿命
      • 4.1.2 带有列编码颜色的折线图
      • 4.1.3 Dash中的折线图
      • 4.1.4 折线图中的数据顺序
      • 4.1.5 连通散点图
      • 4.1.6 带标记的折线图
      • 4.1.7 symbol参数可用于将数据字段映射到标记符号
      • 4.1.8 日期轴上的折线图
      • 4.1.9 Sparklines with Plotly Express
    • 4.2 go.Scatter的折线图
      • 4.2.1 简单折线图
      • 4.2.2 折线图模式
      • 4.2.3 样式折线图
      • 4.2.4 连接数据缺口
      • 4.2.5 折线图插值
      • 4.2.6 带注释的标签线
      • 4.2.7 填充折线图
      • 4.2.8 Dash中的go折线图

四、实例

4.1 px的折线图

4.1.1 加拿大的预期寿命

import plotly.express as px

df = px.data.gapminder().query("country=='Canada'")
fig = px.line(df, x="year", y="lifeExp", title='加拿大的预期寿命')
fig.show()

在这里插入图片描述

4.1.2 带有列编码颜色的折线图

import plotly.express as px

df = px.data.gapminder().query("continent=='Oceania'")
fig = px.line(df, x="year", y="lifeExp", color='country')
fig.show()

在这里插入图片描述

4.1.3 Dash中的折线图

import dash
from dash import html, dcc
from dash.dependencies import Input, Output
import plotly.express as px

df = px.data.gapminder()
all_continents = df.continent.unique()

app = dash.Dash(__name__)

app.layout = html.Div([
    dcc.Checklist(
        id="checklist",
        options=[{"label": x, "value": x}
                 for x in all_continents],
        value=all_continents[3:],
        labelStyle={'display': 'inline-block'}
    ),
    dcc.Graph(id="line-chart"),
])

@app.callback(
    Output("line-chart", "figure"),
    [Input("checklist", "value")])
def update_line_chart(continents):
    mask = df.continent.isin(continents)
    fig = px.line(df[mask],
        x="year", y="lifeExp", color='country')
    return fig

app.run_server(debug=True)

在这里插入图片描述

4.1.4 折线图中的数据顺序

import plotly.express as px
import pandas as pd

df = pd.DataFrame(dict(
    x = [1, 3, 2, 4],
    y = [1, 2, 3, 4]
))
fig = px.line(df, x="x", y="y", title="Unsorted Input")
fig.show()

df = df.sort_values(by="x")
fig = px.line(df, x="x", y="y", title="Sorted Input")
fig.show()

在这里插入图片描述
在这里插入图片描述

4.1.5 连通散点图

import plotly.express as px

df = px.data.gapminder().query("country in ['Canada', 'Botswana']")

fig = px.line(df, x="lifeExp", y="gdpPercap", color="country", text="year")
fig.update_traces(textposition="bottom right")
fig.show()

在这里插入图片描述

4.1.6 带标记的折线图

import plotly.express as px
df = px.data.gapminder().query("continent == 'Oceania'")
fig = px.line(df, x='year', y='lifeExp', color='country', markers=True)
fig.show()

在这里插入图片描述

4.1.7 symbol参数可用于将数据字段映射到标记符号

import plotly.express as px
df = px.data.gapminder().query("continent == 'Oceania'")
fig = px.line(df, x='year', y='lifeExp', color='country', symbol="country")
fig.show()

在这里插入图片描述

4.1.8 日期轴上的折线图

  • 线图可以使用任何类型的笛卡尔坐标轴绘制,包括线性、对数、分类或日期轴。日期轴上的直线图通常称为时间序列图。
  • 当相应的数据是ISO格式的日期字符串,或者是日期列或日期时间NumPy数组时,Plotly自动将轴类型设置为日期格式。
import plotly.express as px

df = px.data.stocks()
fig = px.line(df, x='date', y="GOOG")
fig.show()

在这里插入图片描述

4.1.9 Sparklines with Plotly Express

Sparklines是子图内的散点图,删除了网格线、轴线和记号。

import plotly.express as px
df = px.data.stocks(indexed=True)
fig = px.line(df, facet_row="company", facet_row_spacing=0.01, height=200, width=200)

# 隐藏并锁定轴
fig.update_xaxes(visible=False, fixedrange=True)
fig.update_yaxes(visible=False, fixedrange=True)

# 删除标签
fig.update_layout(annotations=[], overwrite=True)

# 把其余部分删掉
fig.update_layout(
    showlegend=False,
    plot_bgcolor="white",
    margin=dict(t=10,l=10,b=10,r=10)
)

# 对于这样小的绘图,禁用模式栏
fig.show(config=dict(displayModeBar=False))

在这里插入图片描述

4.2 go.Scatter的折线图

4.2.1 简单折线图

import plotly.graph_objects as go
import numpy as np

x = np.arange(10)

fig = go.Figure(data=go.Scatter(x=x, y=x**2))
fig.show()

在这里插入图片描述

4.2.2 折线图模式

import plotly.graph_objects as go

# Create random data with numpy
import numpy as np
np.random.seed(1)

N = 100
random_x = np.linspace(0, 1, N)
random_y0 = np.random.randn(N) + 5
random_y1 = np.random.randn(N)
random_y2 = np.random.randn(N) - 5

# 创建轨迹
fig = go.Figure()
fig.add_trace(go.Scatter(x=random_x, y=random_y0,
                    mode='lines',
                    name='lines'))
fig.add_trace(go.Scatter(x=random_x, y=random_y1,
                    mode='lines+markers',
                    name='lines+markers'))
fig.add_trace(go.Scatter(x=random_x, y=random_y2,
                    mode='markers', name='markers'))

fig.show()

在这里插入图片描述

4.2.3 样式折线图

此示例设置轨迹的颜色和虚线样式,添加轨迹名称,修改线宽,以及添加打印和轴标题。

import plotly.graph_objects as go

# 添加数据
month = ['January', 'February', 'March', 'April', 'May', 'June', 'July',
         'August', 'September', 'October', 'November', 'December']
high_2000 = [32.5, 37.6, 49.9, 53.0, 69.1, 75.4, 76.5, 76.6, 70.7, 60.6, 45.1, 29.3]
low_2000 = [13.8, 22.3, 32.5, 37.2, 49.9, 56.1, 57.7, 58.3, 51.2, 42.8, 31.6, 15.9]
high_2007 = [36.5, 26.6, 43.6, 52.3, 71.5, 81.4, 80.5, 82.2, 76.0, 67.3, 46.1, 35.0]
low_2007 = [23.6, 14.0, 27.0, 36.8, 47.6, 57.7, 58.9, 61.2, 53.3, 48.5, 31.0, 23.6]
high_2014 = [28.8, 28.5, 37.0, 56.8, 69.7, 79.7, 78.5, 77.8, 74.1, 62.6, 45.3, 39.9]
low_2014 = [12.7, 14.3, 18.6, 35.5, 49.9, 58.0, 60.0, 58.6, 51.7, 45.2, 32.2, 29.1]

fig = go.Figure()
# 创建轨迹并添加样式
fig.add_trace(go.Scatter(x=month, y=high_2014, name='High 2014',
                         line=dict(color='firebrick', width=4)))
fig.add_trace(go.Scatter(x=month, y=low_2014, name = 'Low 2014',
                         line=dict(color='royalblue', width=4)))
fig.add_trace(go.Scatter(x=month, y=high_2007, name='High 2007',
                         line=dict(color='firebrick', width=4,
                              dash='dash') # dash options include 'dash', 'dot', and 'dashdot'
))
fig.add_trace(go.Scatter(x=month, y=low_2007, name='Low 2007',
                         line = dict(color='royalblue', width=4, dash='dash')))
fig.add_trace(go.Scatter(x=month, y=high_2000, name='High 2000',
                         line = dict(color='firebrick', width=4, dash='dot')))
fig.add_trace(go.Scatter(x=month, y=low_2000, name='Low 2000',
                         line=dict(color='royalblue', width=4, dash='dot')))

# 编辑布局
fig.update_layout(title='纽约的平均高温和低温',
                   xaxis_title='月份',
                   yaxis_title='温度 (华氏度)')


fig.show()

在这里插入图片描述

4.2.4 连接数据缺口

import plotly.graph_objects as go

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

fig = go.Figure()

fig.add_trace(go.Scatter(
    x=x,
    y=[10, 20, None, 15, 10, 5, 15, None, 20, 10, 10, 15, 25, 20, 10],
    name = '<b>No</b> Gaps', # 带有html标记的样式名称/图例条目
    connectgaps=True # 覆盖默认值以连接间隙
))
fig.add_trace(go.Scatter(
    x=x,
    y=[5, 15, None, 10, 5, 0, 10, None, 15, 5, 5, 10, 20, 15, 5],
    name='Gaps',
))

fig.show()

在这里插入图片描述

4.2.5 折线图插值

import plotly.graph_objects as go
import numpy as np

x = np.array([1, 2, 3, 4, 5])
y = np.array([1, 3, 2, 3, 1])

fig = go.Figure()
fig.add_trace(go.Scatter(x=x, y=y, name="linear",
                    line_shape='linear'))
fig.add_trace(go.Scatter(x=x, y=y + 5, name="spline",
                    text=["调整线条平滑度<br>在直线对象中使用'smoothing'"],
                    hoverinfo='text+name',
                    line_shape='spline'))
fig.add_trace(go.Scatter(x=x, y=y + 10, name="vhv",
                    line_shape='vhv'))
fig.add_trace(go.Scatter(x=x, y=y + 15, name="hvh",
                    line_shape='hvh'))
fig.add_trace(go.Scatter(x=x, y=y + 20, name="vh",
                    line_shape='vh'))
fig.add_trace(go.Scatter(x=x, y=y + 25, name="hv",
                    line_shape='hv'))

fig.update_traces(hoverinfo='text+name', mode='lines+markers')
fig.update_layout(legend=dict(y=0.5, traceorder='reversed', font_size=16))

fig.show()

在这里插入图片描述

4.2.6 带注释的标签线

import plotly.graph_objects as go
import numpy as np

title = '主要新闻来源'
labels = ['电视', '报纸', '网络', '收音机']
colors = ['rgb(67,67,67)', 'rgb(115,115,115)', 'rgb(49,130,189)', 'rgb(189,189,189)']

mode_size = [8, 8, 12, 8]
line_size = [2, 2, 4, 2]

x_data = np.vstack((np.arange(2001, 2014),)*4)

y_data = np.array([
    [74, 82, 80, 74, 73, 72, 74, 70, 70, 66, 66, 69],
    [45, 42, 50, 46, 36, 36, 34, 35, 32, 31, 31, 28],
    [13, 14, 20, 24, 20, 24, 24, 40, 35, 41, 43, 50],
    [18, 21, 18, 21, 16, 14, 13, 18, 17, 16, 19, 23],
])

fig = go.Figure()

for i in range(0, 4):
    fig.add_trace(go.Scatter(x=x_data[i], y=y_data[i], mode='lines',
        name=labels[i],
        line=dict(color=colors[i], width=line_size[i]),
        connectgaps=True,
    ))

    # endpoints
    fig.add_trace(go.Scatter(
        x=[x_data[i][0], x_data[i][-1]],
        y=[y_data[i][0], y_data[i][-1]],
        mode='markers',
        marker=dict(color=colors[i], size=mode_size[i])
    ))

fig.update_layout(
    xaxis=dict(
        showline=True,
        showgrid=False,
        showticklabels=True,
        linecolor='rgb(204, 204, 204)',
        linewidth=2,
        ticks='outside',
        tickfont=dict(
            family='Arial',
            size=12,
            color='rgb(82, 82, 82)',
        ),
    ),
    yaxis=dict(
        showgrid=False,
        zeroline=False,
        showline=False,
        showticklabels=False,
    ),
    autosize=False,
    margin=dict(
        autoexpand=False,
        l=100,
        r=20,
        t=110,
    ),
    showlegend=False,
    plot_bgcolor='white'
)

annotations = []

# 添加标签
for y_trace, label, color in zip(y_data, labels, colors):
    # 标记绘图的左侧
    annotations.append(dict(xref='paper', x=0.05, y=y_trace[0],
                                  xanchor='right', yanchor='middle',
                                  text=label + ' {}%'.format(y_trace[0]),
                                  font=dict(family='Arial',
                                            size=16),
                                  showarrow=False))
    # 标记绘图的右侧
    annotations.append(dict(xref='paper', x=0.95, y=y_trace[11],
                                  xanchor='left', yanchor='middle',
                                  text='{}%'.format(y_trace[11]),
                                  font=dict(family='Arial',
                                            size=16),
                                  showarrow=False))
# 标题
annotations.append(dict(xref='paper', yref='paper', x=0.0, y=1.05,
                              xanchor='left', yanchor='bottom',
                              text='主要新闻来源',
                              font=dict(family='Arial',
                                        size=30,
                                        color='rgb(37,37,37)'),
                              showarrow=False))
# Source
annotations.append(dict(xref='paper', yref='paper', x=0.5, y=-0.1,
                              xanchor='center', yanchor='top',
                              text='来源: PewResearch Center & ' +
                                   'Storytelling with data',
                              font=dict(family='Arial',
                                        size=12,
                                        color='rgb(150,150,150)'),
                              showarrow=False))

fig.update_layout(annotations=annotations)

fig.show()

在这里插入图片描述

4.2.7 填充折线图

import plotly.graph_objects as go
import numpy as np



x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
x_rev = x[::-1]

# Line 1
y1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y1_upper = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
y1_lower = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
y1_lower = y1_lower[::-1]

# Line 2
y2 = [5, 2.5, 5, 7.5, 5, 2.5, 7.5, 4.5, 5.5, 5]
y2_upper = [5.5, 3, 5.5, 8, 6, 3, 8, 5, 6, 5.5]
y2_lower = [4.5, 2, 4.4, 7, 4, 2, 7, 4, 5, 4.75]
y2_lower = y2_lower[::-1]

# Line 3
y3 = [10, 8, 6, 4, 2, 0, 2, 4, 2, 0]
y3_upper = [11, 9, 7, 5, 3, 1, 3, 5, 3, 1]
y3_lower = [9, 7, 5, 3, 1, -.5, 1, 3, 1, -1]
y3_lower = y3_lower[::-1]


fig = go.Figure()

fig.add_trace(go.Scatter(
    x=x+x_rev,
    y=y1_upper+y1_lower,
    fill='toself',
    fillcolor='rgba(0,100,80,0.2)',
    line_color='rgba(255,255,255,0)',
    showlegend=False,
    name='合理的',
))
fig.add_trace(go.Scatter(
    x=x+x_rev,
    y=y2_upper+y2_lower,
    fill='toself',
    fillcolor='rgba(0,176,246,0.2)',
    line_color='rgba(255,255,255,0)',
    name='优质的',
    showlegend=False,
))
fig.add_trace(go.Scatter(
    x=x+x_rev,
    y=y3_upper+y3_lower,
    fill='toself',
    fillcolor='rgba(231,107,243,0.2)',
    line_color='rgba(255,255,255,0)',
    showlegend=False,
    name='理想的',
))
fig.add_trace(go.Scatter(
    x=x, y=y1,
    line_color='rgb(0,100,80)',
    name='合理的',
))
fig.add_trace(go.Scatter(
    x=x, y=y2,
    line_color='rgb(0,176,246)',
    name='优质的',
))
fig.add_trace(go.Scatter(
    x=x, y=y3,
    line_color='rgb(231,107,243)',
    name='理想的',
))

fig.update_traces(mode='lines')
fig.show()

在这里插入图片描述

4.2.8 Dash中的go折线图

  • Dash是一个用于构建分析应用程序的开源框架,不需要Javascript,它与Plotly graphing库紧密集成。
  • 在这个页面的任何地方,你都可以看到fig.show(),你可以通过把它从内置的Dash_core_components包传递到Graph组件的figure参数,在Dash应用程序中显示相同的图形,如下所示:
import plotly.graph_objects as go

import dash
from dash import html, dcc

import numpy as np
np.random.seed(1)

N = 100
random_x = np.linspace(0, 1, N)
random_y0 = np.random.randn(N) + 5
random_y1 = np.random.randn(N)
random_y2 = np.random.randn(N) - 5

fig = go.Figure()
fig.add_trace(go.Scatter(x=random_x, y=random_y0,
                    mode='lines',
                    name='lines'))
fig.add_trace(go.Scatter(x=random_x, y=random_y1,
                    mode='lines+markers',
                    name='lines+markers'))
fig.add_trace(go.Scatter(x=random_x, y=random_y2,
                    mode='markers', name='markers'))

app = dash.Dash()
app.layout = html.Div([
    dcc.Graph(figure=fig)
])

app.run_server(debug=True, use_reloader=False, port=8051)

在这里插入图片描述

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

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

相关文章

HUAWEI内网最新发布了一份452页网络协议手册,GitHb百万收藏

网络协议 网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。 网络协议作为当下久经不衰的话题&#xff0c;如果你经常看一些CSDN&#xff0c;GitHub&#xff0c;开源中国等较大的程序员网站就可以发现 相关于网络协议的博文非常之多&#xff01; 想要学习…

机密计算能否阻止下一次加密抢劫?

©网络研究院 近几个月来&#xff0c;数十亿美元的加密货币被盗是可以避免的&#xff0c;而机密计算是安全修复的关键。 机密计算旨在隔离敏感数据&#xff0c;而不会将其暴露给系统的其余部分&#xff0c;因为它更容易受到入侵者的攻击。它通过使用基于硬件的安全飞地处…

《Linux运维实战:使用Percona XtraBackup物理备份与恢复Mysql数据》

一、Percona XtraBackup工具介绍 Percona XtraBackup是世界上唯一开源、免费的MySQL热备份软件&#xff0c;可为InnoDB和XtraDB数据库执行非阻塞备份。 参考官方&#xff1a;Percona XtraBackup 1.1、支持的存储引擎 Percona XtraBackup可与MySQL和Percona Server配合使用。它…

虹科教您 | 利用UBIQUITY路由器实现对PLC的远程控制——以西门子S7-1200为例

随着各种工业协议的发展&#xff0c;各个工厂将面临着需要实现多种不同协议以及设备互联的挑战&#xff0c;其中也包含传统的机器设备。为了能够顺应物联网的发展&#xff0c;大幅提高效率&#xff0c;降低成本和资源消耗&#xff0c;并最终实现将传统工业提升到智能化的新阶段…

签约减碳计算模型背后:重新定义ESG

如果将法大大比做电子签界的“支付宝”&#xff0c;那么其减碳计算模型更像是“蚂蚁森林”&#xff0c;向内输血&#xff0c;向外赋能。 作者|斗斗 出品|产业家 纸张、打印、包装、运输......所有环节的碳排放因子被带入公式后&#xff0c;签约场景的碳排放清晰可见。至此…

三年前下载量达600W的老游戏,没想到还能发光发热!

说好的 TypeScript 版已经三年了&#xff0c;是时候该兑现了&#xff01;《球球要回家2》是晓衡当年&#xff0c;初开微店晓衡在线时的开门商品&#xff08;2021 年被 Cocos 招安&#xff0c;在 Cocos 引擎负责 CocosStore 与 Cocos微店 的运营工作&#xff09;。《球球要回家2…

【服务器数据恢复】raid6崩溃导致上层虚拟机不可用的数据恢复案例

服务器故障&#xff1a; 服务器中一组由16块硬盘组成的raid6磁盘阵列&#xff0c;其中有一块硬盘由于物理故障掉线&#xff0c;服务器上层虚拟机不可用&#xff0c;部分分区丢失。用户重启服务器后发现上层数据还是处于丢失状态。 服务器数据恢复过程&#xff1a; 1、服务器数据…

Checked exception及Unchecked exception对比

一、异常分类 从异常处理机制的角度可以分为两类&#xff0c;Unchecked Exceptions和Checked Exceptions。Check即编译器检查程序是否已经抛出或处理了可能的异常。Unchecked Exceptions指的是被程序员check的异常&#xff0c;Checked Exceptions指的是被编译器check的异常。 T…

封装一个丝滑的聊天框组件

需求背景 应公司业务要求&#xff0c;需要做个聊天机器人&#xff0c;要适应不同的业务场景&#xff0c;大概就跟淘宝客服类似&#xff0c;发送消息&#xff0c;机器人自动回复。 话不多说&#xff0c;直接开撸 技术栈&#xff1a; react&#xff08;hooks写法&#xff09; …

Python——列表的常用操作

1.append&#xff1a; cities [北京] cities.append(上海) 2.count&#xff1a;统计某个元素在泪飙中出现的次数 temps [to,be,or,not,to,be] print(temps.count(to)) 3.extend&#xff1a;将一个列表中元素追加到另外一个列表中 a [1,2,3] b [4,5,6] c a.extend(b) 4.ins…

GPU上运行基于bert的分类任务训练loss为nan

问题如下&#xff1a; 运行环境&#xff1a;GPU 1080Ti 代码流程&#xff1a;因为是在之前的一份情感数据集上测试通过的&#xff0c;所以流程整体上应该没有大的问题。 但就是loss一直为nan&#xff0c;也没有报错。 然后经对比测试&#xff0c;同样的数据&#xff0c;同样…

Java——红黑树

概念 红黑树也是一种二叉搜索树&#xff0c;但是和avl树不同&#xff0c;它并不是依靠平衡因子来保证树的平衡的&#xff0c;而是通过颜色 红黑树每个节点中会存储颜色&#xff0c;分为红色和黑色&#xff0c;通过红黑树的限制条件&#xff0c;可以保证从根节点出发到叶子节点…

Final、求职两头难,留学生如何摆脱焦虑?

2022不知不觉已临近尾声&#xff0c;期末在即&#xff0c;今年秋招也即将告一段落。很多同学在学业和求职两难中艰难挣扎&#xff0c;焦虑情绪无形中被无限放大… 你是不是也有这样的感受—看着周围的同学们&#xff0c;一个接一个的拿着offer发到了朋友圈里&#xff0c;而自己…

推荐系统学习笔记-论文研读--点击率预估中特征交互的作用

研究背景 当前点击率预估模型没有完全挖掘特征交互的潜力特征的表征学习与特征的交互存在冲突笛卡尔积的方法比当前的点击率预估模型效果都好算法模型的效率和效果的平衡阿里巴巴线上业务量级和耗时的考虑 当前模型的特征交互的相关方法 论文研究成果 这篇论文的主要贡献 强…

day20【代码随想录】二叉树的前序遍历、二叉树的中序遍历、二叉树的后序遍历

文章目录前言一、二叉树的前序遍历&#xff08;力扣144&#xff09;1、递归遍历2、非递归遍历二、二叉树的中序遍历&#xff08;力扣94&#xff09;1、递归遍历2、非递归遍历三、二叉树的后序遍历&#xff08;力扣145&#xff09;1、递归遍历2、非递归遍历总结前言 1、二叉树的…

十一、JavaScript——字符串

一、转义字符 字符串 在 JS中使用单引号或者双引号来表示字符串&#xff08;要么全用双引号&#xff0c;要么全用单引号&#xff0c;不要混着用&#xff09; 转义字符 反斜杠 \ 使用typeof检查转义字符返回的是string类型 在 JS中使用单引号或者双引号来表示…

零成本实现接口自动化测试 – Java+TestNG 测试Restful service

接口自动化测试 – JavaTestNG 测试 Restful Web Service 关键词&#xff1a;基于Rest的Web服务&#xff0c;接口自动化测试&#xff0c;数据驱动测试&#xff0c;测试Restful Web Service&#xff0c; 数据分离&#xff0c;JavaMavenTestNG 本文主要介绍如何用Java针对Restf…

【Lilishop商城】No3-9.模块详细设计,订单模块-3(售后)的详细设计

仅涉及后端&#xff0c;全部目录看顶部专栏&#xff0c;代码、文档、接口路径在&#xff1a; 【Lilishop商城】记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客 全篇会结合业务介绍重点设计逻辑&#xff0c;其中重点包括接口类、业务类&#xff0c;具体的结合源代…

Seata-TCC快速上手

原文链接 如果是小白&#xff0c;可以先看TCC步骤&#xff0c;核心思想&#xff0c;然后使用Seata&#xff0c;阅读Seata官方提供的示例代码&#xff0c;验证自己的猜想&#xff0c;再看遍TCC。 分布式事务是跨过多个数据库或者系统的事务&#xff0c;在电商、金融领域应用十…

[附源码]Node.js计算机毕业设计房屋租赁管理系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…