关系(一)利用python绘制散点图

关系(一)利用python绘制散点图

散点图 (Scatterplot)简介

1

在笛卡尔座标上放置一系列的数据点,检测两个变量之间的关系,这就是散点图。

散点图可以了解数据之间的各种相关性,如正比、反比、无相关、线性、指数级、 U形等,而且也可以通过数据点的密度(辅助拟合趋势线)来确定相关性的强度。另外,也可以探索出异常值(在远超出一般聚集区域的数据点称)。

快速绘制

  1. 基于seaborn

    import seaborn as sns
    import matplotlib.pyplot as plt
    
    # 导入数据
    df = sns.load_dataset('iris')
    
    # 基于scatterplot函数绘制散点图
    sns.scatterplot(x=df["sepal_length"], y=df["sepal_width"])
    
    plt.show()
    

    2

  2. 基于matplotlib

    import seaborn as sns
    import matplotlib.pyplot as plt
    
    # 导入数据
    df = sns.load_dataset('iris')
    
    # 基于plot函数绘制散点图
    plt.plot( 'sepal_length', 'sepal_width', data=df, linestyle='none', marker='o')
    
    plt.show()
    

    3

定制多样化的散点图

自定义散点图一般是结合使用场景对相关参数进行修改,并辅以其他的绘图知识。参数信息可以通过官网进行查看,其他的绘图知识则更多来源于实战经验,大家不妨将接下来的绘图作为一种学习经验,以便于日后总结。

通过seaborn绘制多样化的散点图

seaborn主要利用scatterplotregplot绘制散点图,可以通过seaborn.scatterplot和seaborn.regplot了解更多用法

  1. 修改参数

    import seaborn as sns
    import matplotlib.pyplot as plt
    import numpy as np
    
    sns.set(font='SimHei', font_scale=0.8, style="darkgrid") # 解决Seaborn中文显示问题
    
    # 导入数据
    df = sns.load_dataset("iris")
    
    # 构造子图
    fig, ax = plt.subplots(2,2,constrained_layout=True, figsize=(8, 8))
    
    # 增加趋势拟合线
    ax_sub = sns.regplot(x=df["sepal_length"], y=df["sepal_width"], fit_reg=True,
                             line_kws={"color":"r","alpha":0.7,"lw":5},ax=ax[0][0])
    ax_sub.set_title('增加趋势拟合线')
    
    # 自定义标记类型
    ax_sub = sns.regplot(x=df["sepal_length"], y=df["sepal_width"], marker="+", fit_reg=False, ax=ax[0][1])
    ax_sub.set_title('自定义标记类型')
    
    # 自定义标记外形
    ax_sub = sns.regplot(x=df["sepal_length"], y=df["sepal_width"], fit_reg=False, 
                            scatter_kws={"color":"darkred", # 颜色
                                      "alpha":0.3, # 透明度
                                      "s":200}, # 点大小
                            ax=ax[1][0]
                        )
    ax_sub.set_title('自定义标记外形')
    
    # 自定义每个点颜色
    value=(df['sepal_length']>6) & (df['sepal_width']>3) # 构造特殊的点
    df['color']= np.where( value==True , "#9b59b6", "#3498db") # 颜色区分
    
    ax_sub = sns.regplot(data=df, x=df["sepal_length"], y=df["sepal_width"], fit_reg=False,
                    scatter_kws={'facecolors':df['color']},ax=ax[1][1])
    ax_sub.set_title('自定义每个点颜色')
    
    plt.show()
    

    4

  2. 分组散点图

    import matplotlib.pyplot as plt
    import seaborn as sns
    import matplotlib.gridspec as gridspec
    
    # 导入自定义模块
    import SeabornFig2Grid as sfg
    
    sns.set(font='SimHei', font_scale=0.8, style="darkgrid") # 解决Seaborn中文显示问题
    
    # 导入数据
    df = sns.load_dataset('iris')
    
    fig = plt.figure(figsize=(8, 8))
    gs = gridspec.GridSpec(2, 2)
    
    # 默认的分组散点图
    scatter1 =sns.lmplot( x="sepal_length", y="sepal_width", data=df, fit_reg=False, hue='species', legend=False)
    scatter1.ax.set_title('默认的分组散点图')
    
    # 自定义每组的标记
    scatter2 = sns.lmplot( x="sepal_length", y="sepal_width", data=df, fit_reg=False, hue='species', legend=False, markers=["o", "x", "1"])
    scatter2.ax.set_title('自定义每组的标记')
    
    # 自定义调色板
    scatter3 = sns.lmplot( x="sepal_length", y="sepal_width", data=df, fit_reg=False, hue='species', legend=False, palette="Set2")
    scatter3.ax.set_title('自定义调色板')
    
    # 自定义颜色
    scatter4 = sns.lmplot( x="sepal_length", y="sepal_width", data=df, fit_reg=False, hue='species', legend=False, palette=dict(setosa="#9b59b6", virginica="#3498db", versicolor="#95a5a6"))
    scatter4.ax.set_title('自定义颜色')
    
    # 使用SeabornFig2Grid转换 seaborn 图为 matplotlib 子图
    mg1 = sfg.SeabornFig2Grid(scatter1, fig, gs[0])
    mg2 = sfg.SeabornFig2Grid(scatter2, fig, gs[1])
    mg3 = sfg.SeabornFig2Grid(scatter3, fig, gs[2])
    mg4 = sfg.SeabornFig2Grid(scatter4, fig, gs[3])
    
    gs.tight_layout(fig)
    plt.show()
    

    5

  3. 添加文本注释

    import pandas as pd
    import numpy as np
    import matplotlib.pylab as plt
    import seaborn as sns
    
    # 自定义数据
    df = pd.DataFrame({
    'x': [1, 1.5, 3, 4, 5],
    'y': [5, 15, 5, 10, 2],
    'group': ['A','other group','B','C','D']
    })
    
    # 绘制基本散点图
    sns.regplot(data=df, x="x", y="y", fit_reg=False, marker="o", color="skyblue", scatter_kws={'s':400})
    
    # 为每个点添加注释
    for line in range(0,df.shape[0]):
         plt.text(df.x[line]+0.2, df.y[line], df.group[line], horizontalalignment='left', size='medium', color='black', weight='semibold')
    
    plt.show()
    

    6

通过matplotlib绘制多样化的散点图

matplotlib主要利用plot绘制散点图,可以通过matplotlib.pyplot.plot了解更多用法

  1. 自定义散点图

    import matplotlib as mpl
    import matplotlib.pyplot as plt
    import matplotlib.patches as patches
    import numpy as np 
    import pandas as pd
    import palmerpenguins
    
    mpl.rcParams.update(mpl.rcParamsDefault) # 恢复默认的matplotlib样式
    plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
    
    # 设置随机种子
    np.random.seed(0)
    
    # 自定义数据
    df=pd.DataFrame({'x_pos': range(1,101), 'y_pos': np.random.randn(100)*80+range(1,101) })
    
    # 初始化
    fig = plt.figure(figsize=(12,8))
    
    # 1、自定义标记
    ax = plt.subplot2grid((2, 2), (0, 0), colspan=1)
    plt.plot( 'x_pos', 'y_pos', data=df, linestyle='none', marker='*', # 标记形状
                    markersize=12, # 标记大小
                    markerfacecolor='skyblue', # 标记颜色
                    markeredgewidth=0.3, # 标记边缘
                    markeredgecolor="orange", # 标记边缘颜色
                     )
    ax.set_title('自定义标记')
    
    
    # 2、添加注释信息
    ax = plt.subplot2grid((2, 2), (0, 1), colspan=1)
    plt.plot( 'x_pos', 'y_pos', data=df, linestyle='none', marker='o')
    # 文本
    plt.annotate('有趣的点!', xy=(25, 200), xytext=(0, 300),
                          # 自定义箭头
                         arrowprops=dict(facecolor='black', shrink=0.005))
    # 公式
    plt.text(70, -120, r'equation: $\sum_{i=0}^\infty x_i$', fontsize=12)
    # 正方形边缘框 
    # patches.Circle为圆形边框,patches.Ellipse为椭圆形边框
    ax.add_patch(
                    patches.Rectangle(
                    (70, 100), # (x,y)
                    25, # 宽
                    50, # 高
                    alpha=0.3, facecolor="red", edgecolor="black", linewidth=3, linestyle='solid')
            )
    # 坐标线(水平与垂直线)
    plt.axvline(40, color='r'),plt.axhline(40, color='r')
    ax.set_title('添加注释信息')
    
    
    # 3、自定义图例
    # 导入数据
    data = palmerpenguins.load_penguins() 
    # 数据定义
    FLIPPER_LENGTH = data["flipper_length_mm"].values # flipper长度数据
    BILL_LENGTH = data["bill_length_mm"].values # bill长度数据
    SPECIES = data["species"].values # 物种类别数据
    SPECIES_ = np.unique(SPECIES) # 物种唯一值
    COLORS = ["#1B9E77", "#D95F02", "#7570B3"] # 颜色列表
    
    ax = plt.subplot2grid((2, 2), (1, 0), colspan=1)
    for species, color in zip(SPECIES_, COLORS):
        idxs = np.where(SPECIES == species)
        ax.scatter(
            FLIPPER_LENGTH[idxs], BILL_LENGTH[idxs], label=species,
            s=50, color=color, alpha=0.7
        )
    # 位置、大小等图例参数
    legend = ax.legend(loc="lower right", fontsize=6, markerscale=2, labelspacing=2, frameon=False)
    handles = legend.legendHandles
    # 自定义标识
    hatches = ["+", "x", "o"]
    for i, handle in enumerate(handles):
        handle.set_edgecolor("#6c2167")
        handle.set_facecolor(COLORS[i])
        handle.set_hatch(hatches[i])
        handle.set_alpha(0.7)
    ax.set_title('自定义图例')
    
    
    # 4、回归拟合线
    # 自定义数据
    rng = np.random.default_rng(1234)
    x = rng.uniform(0, 10, size=100)
    y = x + rng.normal(size=100)
    
    # 绘制散点图
    ax = plt.subplot2grid((2, 2), (1, 1), colspan=1)
    ax.scatter(x, y, s=60, alpha=0.7, edgecolors="k")
    
    # 拟合-polyfit返回斜率b和截距a
    b, a = np.polyfit(x, y, deg=1)
    
    # 绘制回归线
    xseq = np.linspace(0, 10, num=100) # x轴
    ax.plot(xseq, a + b * xseq, color="k", lw=2.5)
    ax.set_title('回归拟合线')
    
    plt.show()
    

    7

  2. 对数刻度线

    import matplotlib as mpl
    import matplotlib.pyplot as plt
    import matplotlib.patches as patches
    import numpy as np 
    import pandas as pd
    
    plt.rcParams['font.sans-serif'] = ['DejaVu Sans'] # 用来正常显示'-' [U+2212]问题
    
    # 自定义数据
    rng = np.random.default_rng(1234)
    x = rng.lognormal(size=200)
    y = x + rng.normal(scale=5 * (x / np.max(x)), size=200)
    
    # 初始化
    fig = plt.figure(figsize=(10,6))
    
    # 原始散点图
    ax = plt.subplot2grid((2, 2), (0, 0), colspan=1)
    ax.scatter(x, y, s=60, alpha=0.7, edgecolors="k")
    ax.set_title('default')
    
    # x轴对数刻度
    ax = plt.subplot2grid((2, 2), (0, 1), colspan=1)
    ax.scatter(x, y, s=60, alpha=0.7, edgecolors="k")
    ax.set_xscale("log")
    ax.set_title('logarithmic scale for x axes')
    
    # y轴对数刻度
    ax = plt.subplot2grid((2, 2), (1, 0), colspan=1)
    ax.scatter(x, y, s=60, alpha=0.7, edgecolors="k")
    ax.set_yscale("log")
    ax.set_title('logarithmic scale for y axes')
    
    # xy轴对数刻度
    ax = plt.subplot2grid((2, 2), (1, 1), colspan=1)
    ax.scatter(x, y, s=60, alpha=0.7, edgecolors="k")
    ax.set_xscale("log")
    ax.set_yscale("log")
    ax.set_title('logarithmic scale for x/y axes')
    
    
    fig.tight_layout() # 自动调整间距
    plt.show()
    

    8

  3. 引申-绘制曼哈顿图

    # 曼哈顿图是散点图的一种变体,可联想曼哈顿鳞次栉比的大楼
    # 一般用于基因相关研究,如GWAS。每组表示一个染色体,每个点表示一个基因
    # x轴为该点在染色体的位置,y轴值代表其P值的-log10,越高相关性越强
    
    from pandas import DataFrame
    from scipy.stats import uniform
    from scipy.stats import randint
    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib as mpl
    import matplotlib.cm as cm
    
    mpl.rcParams.update(mpl.rcParamsDefault) # 恢复默认的matplotlib样式
    
    # 自定义数据
    df = DataFrame({'gene' : ['gene-%i' % i for i in np.arange(10000)],
                    'pvalue' : uniform.rvs(size=10000),
                    'chromosome' : ['ch-%i' % i for i in randint.rvs(0,12,size=10000)]})
    
    # p值对数化
    df['minuslog10pvalue'] = -np.log10(df.pvalue)
    # 染色体组
    df.chromosome = df.chromosome.astype('category') # 转category类型
    df.chromosome = df.chromosome.cat.set_categories(['ch-%i' % i for i in range(12)], ordered=True) # 排序
    df = df.sort_values('chromosome') # 数据排序
    
    # 如何绘制基因与 -log10(pvalue) 的关系并按染色体着色
    df['ind'] = range(len(df))
    df_grouped = df.groupby(('chromosome'))
    
    # 绘制曼哈顿图
    fig = plt.figure(figsize=(14, 8))
    ax = fig.add_subplot(111)
    cmap = cm.get_cmap('rainbow', 12) # 获取调色板
    colors = [cmap(i) for i in range(12)] # 分配颜色
    x_labels = []
    x_labels_pos = []
    
    for num, (name, group) in enumerate(df_grouped):
        group.plot(kind='scatter', x='ind', y='minuslog10pvalue',color=colors[num % len(colors)], ax=ax)
        x_labels.append(name)
        x_labels_pos.append((group['ind'].iloc[-1] - (group['ind'].iloc[-1] - group['ind'].iloc[0])/2))
    ax.set_xticks(x_labels_pos)
    ax.set_xticklabels(x_labels)
    
    # 设置轴
    ax.set_xlim([0, len(df)])
    ax.set_ylim([0, 3.5])
    ax.set_xlabel('Chromosome')
    
    plt.show()
    

    9

  4. 引申-单轴散点图

    import matplotlib.pyplot as plt
    import numpy as np
    import pandas as pd
    import random
    
    # 自定义数据
    days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
    hours = list(range(24))
    sales_data = []
    
    for day in days:
        for hour in hours:
            rand_num = random.random()  # 生成0-1之间的随机数
            if rand_num <= 0.8:  # 80%的概率生成0-100之间的销售量
                sales_volume = random.randint(0, 20)
            else:  # 20%的概率生成100-600之间的销售量
                sales_volume = random.randint(40, 500)
            sales_data.append([day, hour, sales_volume])
    
    df = pd.DataFrame(sales_data, columns=['Day', 'Hour', 'Sales Volume'])
    
    
    # 将一周的数据映射成数值类型,方便Y轴显示
    day_to_num = {day: num for num, day in enumerate(days)}
    df['Day_num'] = df['Day'].map(day_to_num)
    
    # 创建一个新的figure
    plt.figure(figsize=(10,6))
    
    # 移除边框
    spines = plt.gca().spines
    for side in ['top','right']:
        spines[side].set_visible(False)
    
    # 为每一天绘制散点图
    for day in days:
        day_data = df[df['Day'] == day]
        plt.scatter(day_data['Hour'], day_data['Day_num'], s=day_data['Sales Volume'], label=day)
    
    plt.yticks(np.arange(len(days)), days)    # 设置y轴的刻度和标签
    
    # 自定义图里
    plt.legend(bbox_to_anchor=(1.02,1), loc="upper left", borderaxespad=0)
    
    plt.show()
    

    14

如何避免过度绘制造成的散点重叠

适当处理样本

# 当数据集较大时,绘制散点图容易出现重叠造成不可读
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import seaborn as sns
import pandas as pd
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签

# 自定义数据
df=pd.DataFrame({'x': np.random.normal(10, 1.2, 20000), 
                 'y': np.random.normal(10, 1.2, 20000), 'group': np.repeat('A',20000) })
tmp1=pd.DataFrame({'x': np.random.normal(14.5, 1.2, 20000), 
                   'y': np.random.normal(14.5, 1.2, 20000), 'group': np.repeat('B',20000) })
tmp2=pd.DataFrame({'x': np.random.normal(9.5, 1.5, 20000), 
                   'y': np.random.normal(15.5, 1.5, 20000), 'group': np.repeat('C',20000) })
df=pd.concat([df,tmp1,tmp2], ignore_index=True)


# 初始化
fig = plt.figure(figsize=(8,8))

# 过度绘制
ax = plt.subplot2grid((2, 2), (0, 0), colspan=1)
plt.plot('x', 'y', "o", data=df, linestyle='')
ax.set_title('过度绘制')

# 减小标记与透明度
ax = plt.subplot2grid((2, 2), (0, 1), colspan=1)
plt.plot( 'x', 'y', "o", data=df, linestyle='', markersize=3, alpha=0.05, color="purple")
ax.set_title('减小标记与透明度')

# 2D密度图
ax = plt.subplot2grid((2, 2), (1, 0), colspan=1)
sns.kdeplot(data = df, x="x", y="y", cmap="Reds", fill=True)
ax.set_title('2D密度图')

# 样本采样
df_sample=df.sample(1000) # 样本采样
ax = plt.subplot2grid((2, 2), (1, 1), colspan=1)
plt.plot('x', 'y', "o", data=df_sample, linestyle='')
ax.set_title('样本采样')


fig.tight_layout() # 自动调整间距
plt.show()

10

分开观察

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd
import matplotlib.gridspec as gridspec

# 导入自定义模块
import SeabornFig2Grid as sfg

sns.set(font='SimHei', font_scale=0.8, style="darkgrid") # 解决Seaborn中文显示问题
 
# 自定义数据
df=pd.DataFrame({'x': np.random.normal(10, 1.2, 20000), 
                 'y': np.random.normal(10, 1.2, 20000), 'group': np.repeat('A',20000) })
tmp1=pd.DataFrame({'x': np.random.normal(14.5, 1.2, 20000), 
                   'y': np.random.normal(14.5, 1.2, 20000), 'group': np.repeat('B',20000) })
tmp2=pd.DataFrame({'x': np.random.normal(9.5, 1.5, 20000), 
                   'y': np.random.normal(15.5, 1.5, 20000), 'group': np.repeat('C',20000) })
df=pd.concat([df,tmp1,tmp2], ignore_index=True)

# 子图, 使用 gridspec 进行比例分配
fig = plt.figure(figsize=(8, 8))
gs = gridspec.GridSpec(2, 1, height_ratios=[4, 1])

# 绘制分组散点图
scatter1 = sns.lmplot( x="x", y="y", data=df, fit_reg=False, hue='group', 
               legend=False, palette="Accent", scatter_kws={"alpha":0.1,"s":15} )
scatter1.ax.legend(loc='lower right', markerscale=2)
scatter1.ax.set_title('分组散点图')

# 绘制分位面散点图
g = sns.FacetGrid(df, col="group", hue="group")
scatter2 = (g.map(plt.scatter, "x", "y", edgecolor="w"))
g.set_titles('分位面散点图-group {col_name}')
 
# 使用SeabornFig2Grid转换 seaborn 图为 matplotlib 子图
mg1 = sfg.SeabornFig2Grid(scatter1, fig, gs[0])
mg2 = sfg.SeabornFig2Grid(scatter2, fig, gs[1]) 
    
gs.tight_layout(fig)
plt.show()

11

抖动散点图

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd

sns.set(font='SimHei', font_scale=0.8, style="darkgrid") # 解决Seaborn中文显示问题

# 自定义数据
a=np.concatenate([np.random.normal(2, 4, 1000), 
                  np.random.normal(4, 4, 1000), 
                  np.random.normal(1, 2, 500), 
                  np.random.normal(10, 2, 500), 
                  np.random.normal(8, 4, 1000), 
                  np.random.normal(10, 4, 1000)])
df=pd.DataFrame({'x': np.repeat( range(1,6), 1000), 'y': a })

fig, axs = plt.subplots(ncols=2, figsize=(8, 4)) # 创建1行2列的子图

# 原始散点图
axs[0].plot( 'x', 'y', "o", data=df, linestyle='')
axs[0].set_title('原始散点图')

# 抖动散点图
sns.stripplot(data =df, x="x", y="y", jitter=0.2, size=2, ax=axs[1])
axs[1].set_title('抖动散点图')

plt.tight_layout()
plt.show()

12

3D图

# 3D图
from scipy.stats import gaussian_kde
from mpl_toolkits.mplot3d import Axes3D
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl

mpl.rcParams.update(mpl.rcParamsDefault) # 恢复默认的matplotlib样式
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签

# 自定义数据
nbins=300
k = gaussian_kde([df.x,df.y])
xi, yi = np.mgrid[ df.x.min():df.x.max():nbins*1j, df.y.min():df.y.max():nbins*1j]
zi = k(np.vstack([xi.flatten(), yi.flatten()]))
data=pd.DataFrame({'x': xi.flatten(), 'y': yi.flatten(), 'z': zi })

# 绘制3D图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_trisurf(data.x, data.y, data.z, cmap=plt.cm.Spectral, linewidth=0.2)

ax.view_init(30, 80)

plt.title('3D图')
plt.show()

13

总结

以上通过seaborn的scatterplot和matplotlib的plot可以快速绘制散点图,并通过修改参数或者辅以其他绘图知识自定义各种各样的散点图来适应相关使用场景。

共勉~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[linux]--关于进程概念(下)

目录 孤儿进程 环境变量 将程序放到PATH路径下 设置PATH环境变量 设置别名 环境变量相关的命令 环境变量的组织方式​编辑 通过系统调用获取环境变量 环境变量通常是具有全局属性的 进程优先级 查看系统进程 用top命令更改已存在进程的nice&#xff1a; 程序地址空…

【Python实战】——神经网络识别手写数字

&#x1f349;CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一&#xff5c;统计学&#xff5c;干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项&#xff0c;参与研究经费10w、40w级横向 文…

评测i5 1335U和r7 8840HS差距 酷睿i51335U和r78840HS对比

r7 8840HS采用 Zen 4架构 4 nm制作工艺8核 16线程主频 3.3GHz睿频5.1GHz 三 级缓存16MB TDP 功耗 28w 搭载AMD Radeon 780M核显 选i5 1335U还是i5 1235U这些点很重要http://www.adiannao.cn/dy i5 1335U处理器采用10nm工艺制程&#xff0c;拥有10核心12线程&#xff0c;最大睿…

接口关联和requests库

一、接口关联 postman的接口 postman的接口关联配置&#xff1a;js代码&#xff0c;重点在于思路。 // 定义jsonData这个变量 接受登录接口的返回结果 var jsonData JSON.parse(responseBody); // 从返回结果里提取token/id值&#xff0c;并赋值给token/id变量值作为环境变…

电视盒子哪个好?最具性价比网络电视盒子排行榜

挑选电视盒子的时候预算有限的消费者会把性价比放在第一位&#xff0c;如何才能在预算范围内选到配置最好的产品呢&#xff1f;小编这次盘点的是最具性价比的网络电视盒子排行榜&#xff0c;整理了五款最值得入手的电视盒子&#xff0c;不知道电视盒子哪个好可以看看以下这些。…

python -- 循环语句

你好, 我是木木, 目前正在做两件事   1. 沉淀自己的专业知识   2. 探索了解各种副业项目&#xff0c;同时将探索过程进行分享&#xff0c;帮助自己以及更多朋友找到副业, 做好副业 文末有惊喜 循环语句 1、什么是循环语句 一般编程语言都有循环语句&#xff0c;为什么呢&am…

蓝桥杯STM32 G431 hal库开发速成——输入捕获

蓝桥杯的输入捕获较为简单&#xff0c;基本不涉及溢出的问题。所以这里就不介绍溢出了。文末有源码。 核心思想&#xff1a;在第一次上升沿的时候计第一个数&#xff0c;第一次下降沿的时候计第二个数&#xff0c;第二次上升沿的时候计第三个数。 占空比 (第二个数-第一个数…

2024年必用的九大顶级Java分析器:性能优化的利器

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

基于Java的桃花峪滑雪场租赁系统(Vue.js+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 游客服务2.2 雪场管理 三、数据库设计3.1 教练表3.2 教练聘请表3.3 押金规则表3.4 器材表3.5 滑雪场表3.7 售票表3.8 器材损坏表 四、系统展示五、核心代码5.1 查询教练5.2 教练聘请5.3 查询滑雪场5.4 滑雪场预定5.5 新…

性能测试丨GreatSQL TPC-H 性能测试报告正式发布!

1、测试背景概述 本次测试针对GreatSQL开源数据库基于标准 TPC-H 场景的测试。 TPC-H&#xff08;商业智能计算测试&#xff09;是美国交易处理效能委员会&#xff08;TPC&#xff0c;TransactionProcessing Performance Council&#xff09;组织制定的用来模拟决策支持类应用…

数据容器-序列-集合-Python

师从黑马程序员 序列 序列的常用操作-切片 切片&#xff1a;从一个序列中&#xff0c;取出一个子序列 语法&#xff1a;序列[起始下标:结束下标&#xff0c;步长] 注&#xff1a;此操作不会影响序列本身&#xff0c;而是会得到一个新的序列 my_list[0.1,2,3,4,5,6] result1…

【大模型】VS Code(Visual Studio Code)上安装的扩展插件用不了,设置VS Code工作区信任

文章目录 一、找到【管理工作区信任】二、页面显示处于限制模式&#xff0c;改为【信任】三、测试四、总结 【运行环境】win 11 相关文章&#xff1a; 【大模型】直接在VS Code(Visual Studio Code)上安装CodeGeeX插件的过程 【问题】之前在 VS Code上安装 CodeGeeX 插件后&…

C语言中如何动态分配内存并进行操作

C语言文章更新目录 C语言学习资源汇总&#xff0c;史上最全面总结&#xff0c;没有之一 C/C学习资源&#xff08;百度云盘链接&#xff09; 计算机二级资料&#xff08;过级专用&#xff09; C语言学习路线&#xff08;从入门到实战&#xff09; 编写C语言程序的7个步骤和编程…

100个openharmony开源demo:1.日历

准备用开发者手机写100个开源的demo不知道能不能实现&#xff0c;日拱一卒&#xff0c;期待蜕变。 第一个demo&#xff1a;日历&#xff0c;借鉴了网上的日历算法&#xff0c;自己用arkts写了界面和点击事件&#xff0c;各位可根据此demo写自己的日历选择器等组件。 1.目录结…

Go——map操作及原理

一.map介绍和使用 map是一种无序的基于key-value的数据结构&#xff0c;Go语言的map是引用类型&#xff0c;必须初始化才可以使用。 1. 定义 Go语言中&#xff0c;map类型语法如下&#xff1a; map[KeyType]ValueType KeyType表示键类型ValueType表示值类型 map类型的变量默认…

python总结-Linux系统使用

设置变量并输出 [rootldpbzhaonan py]$ cat var01.py str1hello str2worldprintf "${str1} ${str2} \n" printf ${str1} ${str2} \n\n就是代表换行&#xff0c;使用printf输出的话&#xff0c;没有自动换行。 不使用换行如下图显示 [rootldpbzhaonan py]$ cat var0…

C语言学习 五、一维数组与字符数组

5.1一维数组 5.1.1数组的定义 数组特点&#xff1a; 具有相同的数据类型使用过程中需要保存原始数据 C语言为了方便操作这些数据&#xff0c;提供了一种构造数据类型——数组&#xff0c;数组是指一组具有相同数据类型的数据的有序集合。 一维数组的定义格式为 数据类型 数…

虚拟+现实,刷新线上直播的“打开方式”

近年来&#xff0c;短视频和线上直播大热&#xff0c;成为我们看世界的途径之一&#xff0c;我们渐渐习惯了看屏幕里面的虚拟世界。随着AIGC技术的不断革新&#xff0c;让虚拟直播间的体验感越来越真实&#xff0c;给我们带来了不同寻常的体验。 虚实融合&#xff0c;超越传统…

将ORB-SLAM3用图像增强的方式打开

ORB-SLAM3在复杂光照环境下&#xff0c;特征提取和特征匹配的性能明显下降&#xff0c;其准确性和鲁棒性收到很大影响&#xff0c;尤其是当周围环境获取的ORB特征点数量不足时&#xff0c;位姿的估计过程无法进行&#xff0c;甚至或导致初始化和跟踪失败的情况&#xff0c;目前…

03、Lua 基本语法

Lua 基本语法 Lua 基本语法第一个 Lua 程序交互式编程脚本式编程 注释单行注释多行注释 标示符关键词全局变量 Lua 基本语法 Lua学习起来非常简单&#xff0c;我们可以创建第一个 Lua 程序&#xff01; 第一个 Lua 程序 交互式编程 Lua提供了交互式编程模式。我们可以在命令…