探讨plot函数中fmt传参中是否指定marker的各种情况,以及不通过fmt传参,而是通过**kwargs传参,应该怎么办?

首先,准备绘制带有误差棒的柱形图来展示区别。 

#导入库并重命名
import numpy as np
import matplotlib.pyplot as plt

#设置支持汉字显示(固定代码,无需更改)
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False

#准备 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])

#指定测量偏差
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

#绘制柱形图
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)

#绘制误差棒 : 横杆大小为 3,  线条宽度为 2,  线条颜色为黑色, 数据点标记为p(五边形),不绘制连接线
plt.errorbar(x,                y1, yerr=error1, capsize=3, elinewidth=2, fmt='pk')
plt.errorbar(x + bar_width,    y2, yerr=error2, capsize=3, elinewidth=2, fmt='pk')
plt.errorbar(x + 2*bar_width,  y3, yerr=error3, capsize=3, elinewidth=2, fmt='pk')
plt.errorbar(x + 3*bar_width,  y4, yerr=error4, capsize=3, elinewidth=2, fmt='pk')
plt.show()

运行结果:

我们知道,fmt中的参数由

(1)marker:数据点的标记样式。

(2)color/c:线条的颜色。

(3)linestyle/ls:线条的样式。

这三个属性简写而成。

 当我们不写入ls的参数时,它是不会帮助我们连接线的。

接着,我们试着添加ls参数并分别改变marker和color的参数,使他们为空。

#不传入marker并添加点线
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()

#不传入color并添加点线
plt.errorbar(x,                y1, yerr=error1, capsize=3, elinewidth=2, fmt='p:')
plt.errorbar(x + bar_width,    y2, yerr=error2, capsize=3, elinewidth=2, fmt='p:')
plt.errorbar(x + 2*bar_width,  y3, yerr=error3, capsize=3, elinewidth=2, fmt='p:')
plt.errorbar(x + 3*bar_width,  y4, yerr=error4, capsize=3, elinewidth=2, fmt='p:')
plt.show()

无marker:

无color:

所以,marker在无参时不会影响到其他属性的正常传入,

而无color时线条的颜色会跟随柱子的颜色变动。 

然后,试试不通过fmt参数,而是直接运用**kwargs来设置属性。

# 4.绘制误差棒 : 横杆大小为 3,  线条宽度为 2,  线条颜色为黑色, 数据点标记为:p(五边形),绘制连接线
plt.errorbar(x,                y1, yerr=error1, capsize=3, elinewidth=2, color='black',linestyle=':',marker='p')
plt.errorbar(x + bar_width,    y2, yerr=error2, capsize=3, elinewidth=2, color='black',linestyle=':',marker='p')
plt.errorbar(x + 2*bar_width,  y3, yerr=error3, capsize=3, elinewidth=2, color='black',linestyle=':',marker='p')
plt.errorbar(x + 3*bar_width,  y4, yerr=error4, capsize=3, elinewidth=2, color='black',linestyle=':',marker='p')
plt.show()

运行结果: 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值