Matplotlib 绘制带误差条的柱状图:全面指南

Matplotlib 绘制带误差条的柱状图:全面指南

参考:matplotlib bar chart with error bars

MatplotlibPython 中最流行的数据可视化库之一,它提供了强大而灵活的工具来创建各种类型的图表。在数据分析和科学研究中,柱状图是一种常用的图表类型,用于比较不同类别或组之间的数值。而带误差条的柱状图则更进一步,能够显示数据的不确定性或变异性,使得图表更加信息丰富和准确。本文将详细介绍如何使用 Matplotlib 绘制带误差条的柱状图,包括基本概念、各种绘图技巧以及高级定制方法。

1. 带误差条柱状图的基本概念

在开始绘图之前,我们需要了解带误差条柱状图的基本概念。柱状图由一系列矩形条组成,每个矩形条的高度表示某个类别或组的数值。误差条则是在每个矩形条的顶部(或底部)添加的线段,用来表示数据的不确定性范围。

误差条通常表示以下几种统计量:

  1. 标准误差(Standard Error)
  2. 标准差(Standard Deviation)
  3. 置信区间(Confidence Interval)
  4. 自定义误差范围

在 Matplotlib 中,我们可以使用 plt.bar() 函数绘制基本的柱状图,然后使用 plt.errorbar() 函数添加误差条。或者,我们可以直接使用 ax.bar() 方法,通过设置 yerr 参数来添加误差条。

让我们从一个简单的例子开始:

import matplotlib.pyplot as plt
import numpy as np

# 准备数据
categories = ['A', 'B', 'C', 'D']
values = [3, 7, 5, 9]
errors = [0.5, 1, 0.8, 1.2]

# 创建图表
fig, ax = plt.subplots(figsize=(8, 6))

# 绘制带误差条的柱状图
ax.bar(categories, values, yerr=errors, capsize=5)

# 设置标题和轴标签
ax.set_title('Bar Chart with Error Bars - how2matplotlib.com')
ax.set_xlabel('Categories')
ax.set_ylabel('Values')

# 显示图表
plt.show()

Output:

Matplotlib 绘制带误差条的柱状图:全面指南

在这个例子中,我们创建了一个简单的带误差条的柱状图。categories 是 x 轴的类别标签,values 是对应的数值,errors 是每个数值的误差范围。我们使用 ax.bar() 方法绘制柱状图,并通过 yerr 参数添加误差条。capsize 参数设置误差条末端横线的长度。

2. 自定义柱状图的外观

Matplotlib 提供了多种方法来自定义柱状图的外观,包括颜色、宽度、边框等。以下是一些常用的自定义选项:

import matplotlib.pyplot as plt
import numpy as np

categories = ['Apple', 'Banana', 'Orange', 'Grape']
values = [4.2, 5.7, 3.9, 4.8]
errors = [0.3, 0.5, 0.4, 0.3]

fig, ax = plt.subplots(figsize=(10, 6))

ax.bar(categories, values, yerr=errors, capsize=5, 
       color='skyblue', edgecolor='navy', linewidth=2, 
       alpha=0.7, width=0.6, align='center')

ax.set_title('Customized Bar Chart - how2matplotlib.com', fontsize=16)
ax.set_xlabel('Fruit Types', fontsize=12)
ax.set_ylabel('Average Weight (kg)', fontsize=12)

plt.show()

Output:

Matplotlib 绘制带误差条的柱状图:全面指南

在这个例子中,我们使用了以下参数来自定义柱状图的外观:

  • color: 设置柱子的填充颜色
  • edgecolor: 设置柱子的边框颜色
  • linewidth: 设置边框的宽度
  • alpha: 设置透明度
  • width: 设置柱子的宽度
  • align: 设置柱子的对齐方式

通过调整这些参数,我们可以创建更加美观和专业的柱状图。

3. 绘制分组柱状图

在某些情况下,我们可能需要比较多个组之间的多个类别。这时,我们可以使用分组柱状图。以下是一个绘制分组柱状图的例子:

import matplotlib.pyplot as plt
import numpy as np

# 准备数据
categories = ['Category A', 'Category B', 'Category C']
group1 = [4, 7, 5]
group2 = [3, 6, 8]
errors1 = [0.5, 0.7, 0.6]
errors2 = [0.4, 0.5, 0.7]

# 设置 x 轴位置
x = np.arange(len(categories))
width = 0.35

fig, ax = plt.subplots(figsize=(10, 6))

# 绘制两组柱状图
rects1 = ax.bar(x - width/2, group1, width, yerr=errors1, label='Group 1', capsize=5)
rects2 = ax.bar(x + width/2, group2, width, yerr=errors2, label='Group 2', capsize=5)

# 设置图表标题和轴标签
ax.set_title('Grouped Bar Chart with Error Bars - how2matplotlib.com', fontsize=16)
ax.set_xlabel('Categories', fontsize=12)
ax.set_ylabel('Values', fontsize=12)

# 设置 x 轴刻度标签
ax.set_xticks(x)
ax.set_xticklabels(categories)

# 添加图例
ax.legend()

# 调整布局
fig.tight_layout()

plt.show()

Output:

Matplotlib 绘制带误差条的柱状图:全面指南

在这个例子中,我们创建了两组柱状图,每组包含三个类别。我们使用 np.arange() 函数创建 x 轴位置,然后通过调整每组柱子的 x 坐标来实现分组效果。width 参数控制柱子的宽度,通过设置不同的 label 参数,我们可以为每组添加图例。

4. 水平柱状图

有时候,使用水平柱状图可能更适合展示某些类型的数据,特别是当类别标签较长时。以下是一个绘制水平带误差条柱状图的例子:

import matplotlib.pyplot as plt
import numpy as np

# 准备数据
categories = ['Category A', 'Category B', 'Category C', 'Category D', 'Category E']
values = [4, 7, 5, 3, 6]
errors = [0.5, 0.7, 0.6, 0.4, 0.5]

# 创建图表
fig, ax = plt.subplots(figsize=(10, 6))

# 绘制水平柱状图
ax.barh(categories, values, xerr=errors, capsize=5, color='lightgreen', edgecolor='darkgreen')

# 设置标题和轴标签
ax.set_title('Horizontal Bar Chart with Error Bars - how2matplotlib.com', fontsize=16)
ax.set_xlabel('Values', fontsize=12)
ax.set_ylabel('Categories', fontsize=12)

# 调整布局
fig.tight_layout()

plt.show()

Output:

Matplotlib 绘制带误差条的柱状图:全面指南

在这个例子中,我们使用 ax.barh() 方法来绘制水平柱状图。注意,我们使用 xerr 参数而不是 yerr 来添加水平误差条。

5. 添加数值标签

为了使柱状图更加信息丰富,我们可以在每个柱子上添加数值标签。以下是一个示例:

import matplotlib.pyplot as plt
import numpy as np

# 准备数据
categories = ['A', 'B', 'C', 'D']
values = [3.5, 7.2, 5.1, 9.8]
errors = [0.5, 1, 0.8, 1.2]

# 创建图表
fig, ax = plt.subplots(figsize=(10, 6))

# 绘制带误差条的柱状图
bars = ax.bar(categories, values, yerr=errors, capsize=5)

# 添加数值标签
for bar in bars:
    height = bar.get_height()
    ax.text(bar.get_x() + bar.get_width()/2., height,
            f'{height:.1f}',
            ha='center', va='bottom')

# 设置标题和轴标签
ax.set_title('Bar Chart with Error Bars and Value Labels - how2matplotlib.com', fontsize=16)
ax.set_xlabel('Categories', fontsize=12)
ax.set_ylabel('Values', fontsize=12)

# 调整 y 轴范围,为标签留出空间
ax.set_ylim(0, max(values) * 1.2)

plt.show()

Output:

Matplotlib 绘制带误差条的柱状图:全面指南

在这个例子中,我们遍历每个柱子,使用 ax.text() 方法在柱子顶部添加数值标签。我们还调整了 y 轴的范围,以确保标签不会被截断。

6. 自定义误差条样式

Matplotlib 允许我们自定义误差条的样式,包括颜色、线型和宽度等。以下是一个示例:

import matplotlib.pyplot as plt
import numpy as np

# 准备数据
categories = ['Category 1', 'Category 2', 'Category 3', 'Category 4']
values = [4.2, 5.7, 3.9, 4.8]
errors = [0.3, 0.5, 0.4, 0.3]

# 创建图表
fig, ax = plt.subplots(figsize=(10, 6))

# 绘制带自定义误差条的柱状图
ax.bar(categories, values, yerr=errors, capsize=7,
       error_kw={'ecolor': 'red', 'capthick': 2, 'elinewidth': 2, 'linestyle': '--'})

# 设置标题和轴标签
ax.set_title('Bar Chart with Customized Error Bars - how2matplotlib.com', fontsize=16)
ax.set_xlabel('Categories', fontsize=12)
ax.set_ylabel('Values', fontsize=12)

plt.show()

Output:

Matplotlib 绘制带误差条的柱状图:全面指南

在这个例子中,我们使用 error_kw 参数来自定义误差条的样式:

  • ecolor: 设置误差条的颜色
  • capthick: 设置误差条末端横线的粗细
  • elinewidth: 设置误差条线的宽度
  • linestyle: 设置误差条的线型

通过调整这些参数,我们可以创建更加个性化的误差条样式。

7. 使用不同的误差上下限

在某些情况下,误差的上限和下限可能不同。Matplotlib 允许我们为每个数据点设置不同的上下误差限。以下是一个示例:

import matplotlib.pyplot as plt
import numpy as np

# 准备数据
categories = ['A', 'B', 'C', 'D']
values = [4, 7, 5, 9]
lower_errors = [0.3, 0.6, 0.4, 0.8]
upper_errors = [0.5, 1.0, 0.7, 1.2]

# 创建图表
fig, ax = plt.subplots(figsize=(10, 6))

# 绘制带不同上下误差限的柱状图
ax.bar(categories, values, yerr=[lower_errors, upper_errors], capsize=5)

# 设置标题和轴标签
ax.set_title('Bar Chart with Asymmetric Error Bars - how2matplotlib.com', fontsize=16)
ax.set_xlabel('Categories', fontsize=12)
ax.set_ylabel('Values', fontsize=12)

plt.show()

Output:

Matplotlib 绘制带误差条的柱状图:全面指南

在这个例子中,我们为 yerr 参数传递一个包含两个列表的列表:第一个列表是下限误差,第二个列表是上限误差。这样,我们就可以为每个数据点设置不同的上下误差范围。

8. 添加网格线

添加网格线可以帮助读者更容易地比较不同柱子的高度。以下是一个带网格线的柱状图示例:

import matplotlib.pyplot as plt
import numpy as np

# 准备数据
categories = ['Category A', 'Category B', 'Category C', 'Category D']
values = [3.5, 7.2, 5.1, 9.8]
errors = [0.5, 1, 0.8, 1.2]

# 创建图表
fig, ax = plt.subplots(figsize=(10, 6))

# 绘制带误差条的柱状图
ax.bar(categories, values, yerr=errors, capsize=5, color='lightblue', edgecolor='navy')

# 添加网格线
ax.grid(True, axis='y', linestyle='--', alpha=0.7)

# 设置标题和轴标签
ax.set_title('Bar Chart with Error Bars and Grid Lines - how2matplotlib.com', fontsize=16)
ax.set_xlabel('Categories', fontsize=12)
ax.set_ylabel('Values', fontsize=12)

# 调整布局
fig.tight_layout()

plt.show()

Output:

Matplotlib 绘制带误差条的柱状图:全面指南

在这个例子中,我们使用 ax.grid() 方法添加网格线。axis='y' 参数指定只显示水平网格线,linestyle='--' 设置网格线为虚线,alpha=0.7 设置网格线的透明度。

9. ## 9. 设置柱状图的颜色映射

使用颜色映射可以根据数值大小为柱子设置不同的颜色,使图表更具信息量。以下是一个使用颜色映射的示例:

import matplotlib.pyplot as plt
import numpy as np

# 准备数据
categories = ['A', 'B', 'C', 'D', 'E']
values = [3, 7, 2, 9, 5]
errors = [0.5, 1, 0.3, 1.2, 0.8]

# 创建图表
fig, ax = plt.subplots(figsize=(10, 6))

# 创建颜色映射
cmap = plt.cm.get_cmap('viridis')
colors = cmap(np.linspace(0, 1, len(values)))

# 绘制带误差条和颜色映射的柱状图
bars = ax.bar(categories, values, yerr=errors, capsize=5, color=colors)

# 添加颜色条
sm = plt.cm.ScalarMappable(cmap=cmap, norm=plt.Normalize(vmin=min(values), vmax=max(values)))
sm.set_array([])
cbar = fig.colorbar(sm)
cbar.set_label('Value Scale', rotation=270, labelpad=15)

# 设置标题和轴标签
ax.set_title('Bar Chart with Error Bars and Color Mapping - how2matplotlib.com', fontsize=16)
ax.set_xlabel('Categories', fontsize=12)
ax.set_ylabel('Values', fontsize=12)

plt.show()

在这个例子中,我们使用 plt.cm.get_cmap() 函数获取一个颜色映射(这里使用的是 ‘viridis’),然后使用 np.linspace() 创建一个颜色数组。我们还添加了一个颜色条来显示颜色与数值的对应关系。

10. 添加图例和注释

在某些情况下,我们可能需要为柱状图添加图例和注释,以提供更多上下文信息。以下是一个示例:

import matplotlib.pyplot as plt
import numpy as np

# 准备数据
categories = ['Product A', 'Product B', 'Product C']
sales_2020 = [100, 150, 80]
sales_2021 = [120, 170, 110]
errors_2020 = [10, 15, 8]
errors_2021 = [12, 17, 11]

# 创建图表
fig, ax = plt.subplots(figsize=(12, 7))

# 设置柱子的位置
x = np.arange(len(categories))
width = 0.35

# 绘制2020年的柱子
rects1 = ax.bar(x - width/2, sales_2020, width, yerr=errors_2020, label='2020', capsize=5, color='skyblue')

# 绘制2021年的柱子
rects2 = ax.bar(x + width/2, sales_2021, width, yerr=errors_2021, label='2021', capsize=5, color='lightgreen')

# 设置标题和轴标签
ax.set_title('Sales Comparison 2020 vs 2021 - how2matplotlib.com', fontsize=16)
ax.set_xlabel('Products', fontsize=12)
ax.set_ylabel('Sales (million $)', fontsize=12)

# 设置x轴刻度标签
ax.set_xticks(x)
ax.set_xticklabels(categories)

# 添加图例
ax.legend()

# 添加注释
ax.annotate('Significant growth', xy=(2, 110), xytext=(2.3, 130),
            arrowprops=dict(facecolor='black', shrink=0.05))

# 调整布局
fig.tight_layout()

plt.show()

Output:

Matplotlib 绘制带误差条的柱状图:全面指南

在这个例子中,我们创建了一个比较两年销售数据的柱状图。我们使用 ax.legend() 添加图例,使用 ax.annotate() 添加带箭头的注释来突出显示重要信息。

11. 处理大量类别

当需要展示大量类别时,标准的柱状图可能会变得拥挤和难以阅读。在这种情况下,我们可以考虑使用水平柱状图或者旋转 x 轴标签。以下是一个处理大量类别的示例:

import matplotlib.pyplot as plt
import numpy as np

# 准备数据
categories = [f'Category {i}' for i in range(1, 16)]
values = np.random.randint(10, 100, size=len(categories))
errors = np.random.randint(1, 10, size=len(categories))

# 创建图表
fig, ax = plt.subplots(figsize=(12, 8))

# 绘制水平柱状图
bars = ax.barh(categories, values, xerr=errors, capsize=5, color='lightcoral')

# 在柱子上添加数值标签
for i, v in enumerate(values):
    ax.text(v + 3, i, str(v), va='center')

# 设置标题和轴标签
ax.set_title('Horizontal Bar Chart with Many Categories - how2matplotlib.com', fontsize=16)
ax.set_xlabel('Values', fontsize=12)
ax.set_ylabel('Categories', fontsize=12)

# 反转 y 轴,使最高的柱子在顶部
ax.invert_yaxis()

# 移除顶部和右侧的边框
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)

# 调整布局
fig.tight_layout()

plt.show()

Output:

Matplotlib 绘制带误差条的柱状图:全面指南

在这个例子中,我们使用水平柱状图来处理大量类别。我们还反转了 y 轴,使得最高的柱子显示在图表的顶部,这样可以更容易地比较不同类别的值。

12. 堆叠柱状图

堆叠柱状图可以用来显示每个类别的总量,以及各个子类别的贡献。以下是一个带误差条的堆叠柱状图示例:

import matplotlib.pyplot as plt
import numpy as np

# 准备数据
categories = ['A', 'B', 'C', 'D']
values1 = [10, 15, 12, 8]
values2 = [5, 8, 6, 10]
values3 = [3, 4, 5, 7]
errors1 = [1, 1.5, 1.2, 0.8]
errors2 = [0.5, 0.8, 0.6, 1]
errors3 = [0.3, 0.4, 0.5, 0.7]

# 创建图表
fig, ax = plt.subplots(figsize=(10, 6))

# 绘制堆叠柱状图
ax.bar(categories, values1, yerr=errors1, capsize=5, label='Group 1')
ax.bar(categories, values2, yerr=errors2, capsize=5, bottom=values1, label='Group 2')
ax.bar(categories, values3, yerr=errors3, capsize=5, bottom=np.array(values1) + np.array(values2), label='Group 3')

# 设置标题和轴标签
ax.set_title('Stacked Bar Chart with Error Bars - how2matplotlib.com', fontsize=16)
ax.set_xlabel('Categories', fontsize=12)
ax.set_ylabel('Values', fontsize=12)

# 添加图例
ax.legend()

# 调整布局
fig.tight_layout()

plt.show()

Output:

Matplotlib 绘制带误差条的柱状图:全面指南

在这个例子中,我们使用多次调用 ax.bar() 来创建堆叠柱状图。对于第二个和第三个组,我们使用 bottom 参数来指定它们的起始位置。注意,我们需要累加前面组的值来计算每个新组的底部位置。

13. 使用 Seaborn 绘制带误差条的柱状图

Seaborn 是基于 Matplotlib 的统计数据可视化库,它提供了一些高级接口来简化复杂图表的创建。以下是使用 Seaborn 绘制带误差条柱状图的示例:

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

# 准备数据
categories = ['A', 'B', 'C', 'D']
values = [4, 7, 5, 9]
errors = [0.5, 1, 0.8, 1.2]

# 创建 DataFrame
df = pd.DataFrame({'Category': categories, 'Value': values, 'Error': errors})

# 设置 Seaborn 样式
sns.set_style("whitegrid")

# 创建图表
plt.figure(figsize=(10, 6))

# 使用 Seaborn 绘制带误差条的柱状图
ax = sns.barplot(x='Category', y='Value', data=df, capsize=0.1, errcolor='gray', errwidth=1.5)

# 设置标题和轴标签
ax.set_title('Bar Chart with Error Bars using Seaborn - how2matplotlib.com', fontsize=16)
ax.set_xlabel('Categories', fontsize=12)
ax.set_ylabel('Values', fontsize=12)

plt.show()

Output:

Matplotlib 绘制带误差条的柱状图:全面指南

在这个例子中,我们首先创建一个 pandas DataFrame 来存储数据。然后,我们使用 Seaborn 的 barplot() 函数来绘制带误差条的柱状图。Seaborn 会自动计算误差条,但我们也可以通过 yerr 参数指定自定义的误差值。

14. 动态更新柱状图

在某些应用中,我们可能需要动态更新柱状图的数据。以下是一个简单的动态更新柱状图的示例:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.animation import FuncAnimation

# 准备初始数据
categories = ['A', 'B', 'C', 'D']
values = [3, 7, 5, 9]
errors = [0.5, 1, 0.8, 1.2]

# 创建图表
fig, ax = plt.subplots(figsize=(10, 6))

# 初始化柱状图
bars = ax.bar(categories, values, yerr=errors, capsize=5)

# 设置标题和轴标签
ax.set_title('Dynamic Bar Chart with Error Bars - how2matplotlib.com', fontsize=16)
ax.set_xlabel('Categories', fontsize=12)
ax.set_ylabel('Values', fontsize=12)

# 更新函数
def update(frame):
    # 生成新的随机数据
    new_values = np.random.randint(1, 10, size=len(categories))
    new_errors = np.random.uniform(0.1, 1.5, size=len(categories))

    # 更新柱状图数据
    for bar, h, err in zip(bars, new_values, new_errors):
        bar.set_height(h)

    # 更新误差条
    _, caps, vlines = ax.errorbar(categories, new_values, yerr=new_errors, capsize=5, fmt='none')

    # 调整 y 轴范围
    ax.set_ylim(0, max(new_values) * 1.2)

    return bars + caps + vlines

# 创建动画
anim = FuncAnimation(fig, update, frames=100, interval=500, blit=True)

plt.show()

Output:

Matplotlib 绘制带误差条的柱状图:全面指南

在这个例子中,我们使用 Matplotlib 的 FuncAnimation 类来创建动画。update() 函数在每一帧都会生成新的随机数据,并更新柱状图和误差条。

15. 自定义柱状图的形状

虽然标准的矩形柱子是最常见的,但有时我们可能想要使用不同的形状来表示数据。以下是一个使用自定义形状(这里是三角形)的柱状图示例:

import matplotlib.pyplot as plt
import numpy as np

# 准备数据
categories = ['A', 'B', 'C', 'D']
values = [4, 7, 5, 9]
errors = [0.5, 1, 0.8, 1.2]

# 创建图表
fig, ax = plt.subplots(figsize=(10, 6))

# 自定义三角形形状
def triangle(x, y, width, height):
    return plt.Polygon([[x-width/2, y], [x+width/2, y], [x, y+height]], closed=True)

# 绘制三角形柱状图
for i, (cat, val) in enumerate(zip(categories, values)):
    tri = triangle(i, 0, 0.8, val)
    ax.add_patch(tri)

# 添加误差条
ax.errorbar(range(len(categories)), values, yerr=errors, fmt='none', capsize=5, color='black')

# 设置 x 轴刻度和标签
ax.set_xticks(range(len(categories)))
ax.set_xticklabels(categories)

# 设置标题和轴标签
ax.set_title('Custom Shape Bar Chart with Error Bars - how2matplotlib.com', fontsize=16)
ax.set_xlabel('Categories', fontsize=12)
ax.set_ylabel('Values', fontsize=12)

# 调整 y 轴范围
ax.set_ylim(0, max(values) * 1.2)

plt.show()

Output:

Matplotlib 绘制带误差条的柱状图:全面指南

在这个例子中,我们定义了一个 triangle() 函数来创建三角形形状。然后,我们使用循环为每个数据点创建一个三角形,并使用 ax.add_patch() 方法将其添加到图表中。最后,我们单独添加误差条,因为自定义形状不支持内置的误差条功能。

结论

本文详细介绍了如何使用 Matplotlib 绘制带误差条的柱状图,涵盖了从基础到高级的多种技巧和方法。我们探讨了基本的柱状图绘制、自定义外观、分组柱状图、水平柱状图、添加数值标签、自定义误差条样式、使用不同的误差上下限、添加网格线、设置颜色映射、添加图例和注释、处理大量类别、创建堆叠柱状图、使用 Seaborn 绘图、动态更新柱状图以及自定义柱状图形状等多个方面。

通过这些示例,我们可以看到 Matplotlib 提供了丰富的功能和灵活的定制选项,使我们能够创建各种复杂和信息丰富的柱状图。带误差条的柱状图不仅能展示数据的主要趋势,还能反映数据的不确定性或变异性,这在科学研究、数据分析和结果展示中都是非常有价值的。

在实际应用中,选择合适的图表类型和样式对于有效传达信息至关重要。带误差条的柱状图特别适用于以下场景:

  1. 比较不同组或类别之间的数值差异
  2. 展示实验结果及其不确定性
  3. 显示多个时间点或条件下的测量结果
  4. 呈现调查数据及其置信区间

在使用这些图表时,需要注意以下几点:

  1. 确保误差条的含义明确(如标准误差、标准差或置信区间)
  2. 适当选择误差条的大小,以避免视觉混乱
  3. 考虑使用颜色编码或图案来区分不同的组或类别
  4. 当类别较多时,考虑使用水平柱状图或旋转标签以提高可读性
  5. 添加清晰的标题、轴标签和图例,以帮助读者理解图表

最后,虽然本文主要关注 Matplotlib,但值得一提的是,还有其他一些 Python 数据可视化库也提供了绘制带误差条柱状图的功能,如 Seaborn、Plotly 和 Bokeh 等。这些库各有特色,可以根据具体需求和个人偏好选择使用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程