如何在Matplotlib中绘制带标记点的实线直方图拟合曲线?
问题解决:绘制带标记点的实线拟合线
我正在为课程绘制直方图,核心配置已完成,但没法复现一种带标记点的实线样式(近似实线与点线的结合)。我的直方图相关代码如下:
n,bins,patches = ax[0,0].hist(Data1,bins=100,density=True) x = np.arange(bins[0],bins[len(bins)-1],0.25) y = [normalProbabilityDensity(val,mu=xmu,sigma=xsigma) for val in x] ax[0,0].axis([600, 1000, 0.000, 0.010]) ax[0,0].yaxis.set_ticks([0.000, 0.002, 0.004, 0.006, 0.008, 0.010]) ax[0,0].set_ylabel('Relative Frequency', fontsize = 10) ax[0,0].plot(x,y,label="norm prob density", linestyle="dashed") ax[0,0].legend(loc='upper left', fontsize="8") ax[0,0].grid(True)
需要将拟合线调整为下图所示样式:
解决方案
直接在plot()函数中同时指定线条样式和标记点参数即可实现需求:
修改原代码中的plot行,替换为:
ax[0,0].plot(x,y,label="norm prob density", linestyle="solid", marker="o", markersize=3, markevery=5)
参数说明:
linestyle="solid":将线条设置为实线marker="o":使用圆形标记点markersize=3:缩小标记点尺寸,避免遮挡线条markevery=5:控制标记点间隔,每隔5个数据点绘制一个,防止点过于密集
如果想要更贴近示例图的空心标记效果,可以额外添加markerfacecolor参数:
ax[0,0].plot(x,y,label="norm prob density", linestyle="solid", marker="o", markersize=3, markevery=5, color="black", markerfacecolor="white")
内容的提问来源于stack exchange,提问作者Philip
相关产品推荐
相关产品推荐

