1. 导入numpy库 和 matplotlib库中的pyplot模版,并设置支持汉字显示:
# 导入numpy库
# 导入matplotlib库中的pyplot模块
import numpy as np
import matplotlib.pyplot as plt
# 0.设置支持汉字显示(固定代码,无需更改):
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
2. 创建一个名为Chart的类,其中包含fmt字符串的使用情况方法,和用plot0函数中 ** kwargs代替fmt字符串的方法:
# 1.创建一个名为Chart的类:
class Chart:
def __init__(self, y1, y2, y3, y4):
self.y1 = y1
self.y2 = y2
self.y3 = y3
self.y4 = y4
# 包含fmt字符串的使用情况方法:
def chart_bar_errorbar1(self):
plt.bar(x, y1, bar_width)
plt.bar(x + bar_width, y2, bar_width, tick_label=["春季", "夏季", "秋季"])
plt.bar(x + 2 * bar_width, y3, bar_width)
plt.bar(x + 3 * bar_width, y4, bar_width)
plt.errorbar(x, y1, yerr=error1, capsize=3, elinewidth=2, fmt=',k')
plt.errorbar(x + bar_width, y2, yerr=error2, capsize=3, elinewidth=2, fmt=',k')
plt.errorbar(x + 2 * bar_width, y3, yerr=error3, capsize=3, elinewidth=2, fmt=',k')
plt.errorbar(x + 3 * bar_width, y4, yerr=error4, capsize=3, elinewidth=2, fmt=',k')
plt.show()
def chart_bar_errorbar2(self):
plt.bar(x, y1, bar_width)
plt.bar(x + bar_width, y2, bar_width, tick_label=["春季", "夏季", "秋季"])
plt.bar(x + 2 * bar_width, y3, bar_width)
plt.bar(x + 3 * bar_width, y4, bar_width)
plt.errorbar(x, y1, yerr=error1, capsize=3, elinewidth=2, fmt=',')
plt.errorbar(x + bar_width, y2, yerr=error2, capsize=3, elinewidth=2, fmt=',')
plt.errorbar(x + 2 * bar_width, y3, yerr=error3, capsize=3, elinewidth=2, fmt=',')
plt.errorbar(x + 3 * bar_width, y4, yerr=error4, capsize=3, elinewidth=2, fmt=',')
plt.show()
def chart_bar_errorbar3(self):
plt.bar(x, y1, bar_width)
plt.bar(x + bar_width, y2, bar_width, tick_label=["春季", "夏季", "秋季"])
plt.bar(x + 2 * bar_width, y3, bar_width)
plt.bar(x + 3 * bar_width, y4, bar_width)
plt.errorbar(x, y1, yerr=error1, capsize=3, elinewidth=2, fmt='k')
plt.errorbar(x + bar_width, y2, yerr=error2, capsize=3, elinewidth=2, fmt='k')
plt.errorbar(x + 2 * bar_width, y3, yerr=error3, capsize=3, elinewidth=2, fmt='k')
plt.errorbar(x + 3 * bar_width, y4, yerr=error4, capsize=3, elinewidth=2, fmt='k')
plt.show()
# 包含用plot0函数中 ** kwargs代替fmt字符串的方法,其中数据点类型为marker,数据点颜色为color,数据点连接线的线型为linestyle
def chart_bar_errorbar4(self):
plt.bar(x, y1, bar_width)
plt.bar(x + bar_width, y2, bar_width, tick_label=["春季", "夏季", "秋季"])
plt.bar(x + 2 * bar_width, y3, bar_width)
plt.bar(x + 3 * bar_width, y4, bar_width)
plt.errorbar(x, y1, yerr=error1, capsize=3, elinewidth=2, marker='',color='k',linestyle='--')
plt.errorbar(x + bar_width, y2, yerr=error2, capsize=3, elinewidth=2, marker='',color='k',linestyle='--')
plt.errorbar(x + 2 * bar_width, y3, yerr=error3, capsize=3, elinewidth=2, marker='',color='k',linestyle='--')
plt.errorbar(x + 3 * bar_width, y4, yerr=error4, capsize=3, elinewidth=2, marker='',color='k',linestyle='--')
plt.show()
def chart_bar_errorbar5(self):
plt.bar(x, y1, bar_width)
plt.bar(x + bar_width, y2, bar_width, tick_label=["春季", "夏季", "秋季"])
plt.bar(x + 2 * bar_width, y3, bar_width)
plt.bar(x + 3 * bar_width, y4, bar_width)
plt.errorbar(x, y1, yerr=error1, capsize=3, elinewidth=2, marker=',', color='r', linestyle='--')
plt.errorbar(x + bar_width, y2, yerr=error2, capsize=3, elinewidth=2, marker=',', color='r', linestyle='--')
plt.errorbar(x + 2 * bar_width, y3, yerr=error3, capsize=3, elinewidth=2, marker=',', color='r', linestyle='--')
plt.errorbar(x + 3 * bar_width, y4, yerr=error4, capsize=3, elinewidth=2, marker=',', color='r', linestyle='--')
plt.show()
def chart_bar_errorbar6(self):
plt.bar(x, y1, bar_width)
plt.bar(x + bar_width, y2, bar_width, tick_label=["春季", "夏季", "秋季"])
plt.bar(x + 2 * bar_width, y3, bar_width)
plt.bar(x + 3 * bar_width, y4, bar_width)
plt.errorbar(x, y1, yerr=error1, capsize=3, elinewidth=2, marker=',',color='k',linestyle='')
plt.errorbar(x + bar_width, y2, yerr=error2, capsize=3, elinewidth=2, marker=',',color='k',linestyle='')
plt.errorbar(x + 2 * bar_width, y3, yerr=error3, capsize=3, elinewidth=2, marker=',',color='k',linestyle='')
plt.errorbar(x + 3 * bar_width, y4, yerr=error4, capsize=3, elinewidth=2, marker=',',color='k',linestyle='')
plt.show()
3. 准备 x 轴和 y 轴的数据,和指定测量偏差:
if __name__ == "__main__":
# 2.准备 x 轴和 y 轴的数据:
x = np.arange(3)
y1 = np.array([2.04, 1.57, 1.63])
y2 = np.array([1.69, 1.61, 1.64])
y3 = np.array([4.65, 4.99, 4.94])
y4 = np.array([3.39, 2.33, 4.10])
# 3.指定测量偏差:
error1 = [0.16, 0.08, 0.10]
error2 = [0.27, 0.14, 0.14]
error3 = [0.34, 0.32, 0.29]
error4 = [0.23, 0.23, 0.39]
bar_width = 0.2
4. 创建Chart对象:
# 4.创建Chart对象:
charts = Chart(y1, y2, y3, y4)
5. fmt字符串不同情况的使用结果:
# 5.fmt字符串不同情况的使用结果:
# 如果fmt字符中指定了数据点的标注类型却没有指定线型(指定颜色),则不会会制连接线
charts.chart_bar_errorbar1()
# 如果fmt字符中指定了数据点的标注类型却没有指定线型(不指定颜色),则不会会制连接线
charts.chart_bar_errorbar2()
# 如果fmt字符串中指定了颜色却没有指定线型(不指定标注类型),则会制连接线
charts.chart_bar_errorbar3()
运行结果:
6. 用plot0函数中**kwargs代替fmt字符串,其中数据点类型为marker,数据点颜色为color,数据点连接线线型为linestyle:
# 6.用plot0函数中**kwargs代替fmt字符串,其中数据点类型为marker,数据点颜色为color,数据点连接线的线型为linestyle:
# 设置marker='', color='k', linestyle='--'
charts.chart_bar_errorbar4()
# 设置marker=',', color='r', linestyle='--'
charts.chart_bar_errorbar5()
# 设置marker=',', color='k', linestyle=''
charts.chart_bar_errorbar6()
运行结果: