如何在matplotlib中将图例字体改为Times New Roman?

在数据可视化领域,图表的美观程度往往能够直接影响到信息传达的效果。作为Python中最为流行的数据可视化库之一,matplotlib提供了丰富的自定义选项,使用户能够对图表进行高度定制。然而,对于初学者来说,如何将图表中的某些元素,如图例(legend)的字体格式从默认的Sans Serif更改为更为正式的Times New Roman,可能会成为一个挑战。

本文将详细介绍如何在matplotlib中更改图例的字体为Times New Roman,并分享一些实用技巧,帮助你提升数据可视化的专业度。如果你对数据科学感兴趣,不妨考虑加入《CDA数据分析师》培训,系统学习数据分析与可视化技术。

1. matplotlib的基础知识

1.1 matplotlib简介

matplotlib是一个用于创建静态、动态及交互式可视化的Python库。它最初由John D. Hunter于2003年创建,旨在为Python用户提供一个类似MATLAB的绘图接口。随着时间的发展,matplotlib已成为数据科学家和工程师的必备工具之一。

1.2 安装matplotlib

如果你还没有安装matplotlib,可以通过以下命令轻松安装:

pip install matplotlib

1.3 基本用法

以下是一个简单的例子,展示如何使用matplotlib绘制一条直线并显示图例:

import matplotlib.pyplot as plt

x = [1, 2, 3, 4]
y = [1, 4, 9, 16]

plt.plot(x, y, label='Quadratic')
plt.legend()
plt.show()

运行上述代码后,你将看到一个包含图例的图表。默认情况下,图例的字体是Sans Serif。

2. 更改图例字体为Times New Roman

2.1 设置全局字体

matplotlib中,可以使用rcParams来设置全局字体样式。以下是如何将全局字体设置为Times New Roman的示例:

import matplotlib.pyplot as plt
from matplotlib import rcParams

# 设置全局字体为Times New Roman
rcParams['font.family'] = 'serif'
rcParams['font.serif'] = ['Times New Roman']

x = [1, 2, 3, 4]
y = [1, 4, 9, 16]

plt.plot
附录 'Sensitivity',0.85,'Method','twostage'); %delete(h) Part 1. 视频读取 %%Import video tic; path='D:\西南交通大学\结构1班\学习\智能建造\智能建造作 业20230624\video.avi'; outpath='D:\西南交通大学\结构1班\学习\智能建造\智能建造 作业20230624/image'; readerObj = VideoReader(path); videoFrames = read(readerObj); %读取所有帧 numberFrames = get(readerObj, 'NumberOfFrames'); % 帧数 startFrame =1; endFrame =numberFrames; %%Output for i = startFrame : endFrame frame = read(readerObj,i); imshow(frame); outputFile =[outpath,'/image_',num2str(i),'.png']; imwrite(frame,outputFile); disp(['image_',num2str(i),' is finished.']); end toc; %205 秒 Part 2. 圆心检测和数据计算 path = "D:\西南交通大学\结构1班\学习\智能建造\智能建造 作业20230624\image\image_1.png" rgb = imread(path); imshow(rgb) d =drawline; pos = d.Position; diffPos = diff(pos); diameter = hypot(diffPos(1),diffPos(2)) gray_image = rgb2gray(rgb); imshow(gray_image) h =viscircles(centers,radii); average_radii=mean(radii); resolution=20./average_radii; Part 3. 计算位移并绘制时程曲线 %% 1读入视频文件 video_path = "D:\西南交通大学\结构1班\学习\智能建造\智能 建造作业20230624\video.avi" video = VideoReader(video_path); % 获取视频帧数和帧率 frame_num = video.NumberOfFrames; frame_rate = video.FrameRate; % 分别获取每一帧的灰度图像并计算其亮度中心 centroids1 = zeros(frame_num, 2); centroids2 = zeros(frame_num, 2);%定义圆心 centroids3 = zeros(frame_num, 2); centroids4 = zeros(frame_num, 2); centroids5 = zeros(frame_num, 2); centroids6 = zeros(frame_num, 2); Radii1 = zeros(frame_num, 1);%定义半径 Radii2 = zeros(frame_num, 1); Radii3 = zeros(frame_num, 1); Radii4 = zeros(frame_num, 1); Radii5 = zeros(frame_num, 1); Radii6 = zeros(frame_num, 1); for i = 1:frame_num frame = read(video, i);%读取视频每一帧 gray_frame = rgb2gray(frame);%rbg3 通道图转灰度图 gray1 通道 % 使用Hough变换检测圆形目标 [centers,radii, ~] 20],'ObjectPolarity','dark', ... %背景相当亮,大多数塑料片比背景暗。但是,默认情况下, imfindcircles 会找到比背景亮的圆形目标。 %因此,在 imfindcircles 中将参数 'ObjectPolarity' 设置为 'dark' 以搜索较暗的圆。 %imfindcircles 有参数 'Sensitivity',可用于控制此内部阈值, 从而控制算法的敏感度。 %较高的 'Sensitivity' 值会将检测阈值设置得较低,并导致检 测到更多圆。 %[centers,radii] 30],'ObjectPolarity','dark') = imfindcircles(rgb,[10 %'Sensitivity' 是介于 0 和 1 之间的数字,默认设置为 0.85。 将 'Sensitivity' 提高到 0.9。 % [centers,radii] 20],'ObjectPolarity','dark', ... % 'Sensitivity',0.85) %imshow(rgb) %h=viscircles(centers,radii); [centers,radii] = 20],'ObjectPolarity','dark', ... = imfindcircles(rgb,[10 imfindcircles(rgb,[10 = imfindcircles(gray_frame,[10 'Sensitivity',0.85,'Method','twostage'); centers = sortrows(centers); centers_radii=[centers,radii]; centers_radii = sortrows(centers_radii); % 如果检测到了圆形目标,则将其视为亮度中心 if ~isempty(centers) centroids1(i,:) = centers(1,:); centroids2(i,:) = centers(2,:); centroids3(i,:) = centers(3,:); centroids4(i,:) = centers(4,:); centroids5(i,:) = centers(5,:); centroids6(i,:) = centers(6,:); Radii1(i,:) = centers_radii(1,3); Radii2(i,:) = centers_radii(2,3); Radii3(i,:) = centers_radii(3,3); Radii4(i,:) = centers_radii(4,3); Radii5(i,:) =centers_radii(5,3); Radii6(i,:) = centers_radii(6,3); end end %求分辨率 average_Radii=zeros(6,1) average_Radii(1,1) = mean(Radii1); average_Radii(2,1) = mean(Radii2); average_Radii(3,1) = mean(Radii3); average_Radii(4,1) = mean(Radii4); average_Radii(5,1) = mean(Radii5); average_Radii(6,1) = mean(Radii6); all_aver_radii = mean(average_Radii); resolution=20./all_aver_radii;%得到分辨率 %像素矩阵转换为位移矩阵 centroids1=resolution.*centroids1; centroids2=resolution.*centroids2; centroids3=resolution.*centroids3; centroids4=resolution.*centroids4; centroids5=resolution.*centroids5; centroids6=resolution.*centroids6; % 时间向量 time = (0:(frame_num-1))/frame_rate; %% 2.1计算位移时程曲线ROI-1 displacements1 = zeros(frame_num, 1);%定义所占空间 x_displacements1 = zeros(frame_num, 1); y_displacements1 = zeros(frame_num, 1); for i = 2:frame_num x_displacements1(i) = centroids1(i,1)-centroids1(1,1); y_displacements1(i) = centroids1(i,2)-centroids1(1,2); displacements1(i) = sqrt((centroids1(i,1)-centroids1(1,1))^2 +(centroids1(i,2)-centroids1(1,2))^2); end % 将位移时程曲线转换为时间-位移格式并绘制曲线 %第二步:开始绘制图 %创建一个指定名称(Name)背景色(color)属性的图窗 figure('Name','x_displacements1','color','w'); %绘制3条曲线并设置曲线宽度,曲线线型,曲线数据标记 符号 subplot(2,2,1) plot(time, x_displacements1,'o-m','LineWidth',2) %设置图的横坐标名称以及相应字体TimesNewRoman字 体 xlabel('t(s)','FontName','Times New Roman') ylabel('x_Displacement1(mm)','FontName','Times New Roman') grid on; %设置横坐标间隔长度,设置图表内部网格线为虚线,线粗 为1. %set(gca,'xtick',length_1bar_min:(length_x/element):length_1ba r_max) ; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1); %%fp. LineWidth = 2; ax =gca; %current axes 通过上述语法,"gca"获取到目前的坐标系的 所有属性,再返还给"ax"。 ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 %ax.TickLength = [0.02 0.02]; % 设置刻度线的长度 %ax.XLim = [0 6];% 设置横坐标轴的区间 %ax.YLim = [-0.001645-0.000432];% 设置纵坐标轴的区间 %设置图表的名称以及字体大小和格式 %ax.TickLabelInterpreter = 'Times New Roman'; legend({['x_displacements1']},'FontSize',15); title(['x_displacements1 ']); %%------------------------------------------------------------------------------------------------ subplot(2,2,2) plot(time, y_displacements1,'o-m','LineWidth',2) %设置图的横坐标名称以及相应字体TimesNewRoman字 体 xlabel('t(s)','FontName','Times New Roman') ylabel('y_Displacement1(mm)','FontName','Times New Roman') grid on; %设置横坐标间隔长度,设置图表内部网格线为虚线,线粗 为1. %set(gca,'xtick',length_1bar_min:(length_x/element):length_1ba r_max) ; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1); %%fp. LineWidth = 2; ax = gca; %current axes 通过上述语法,"gca"获取到目前的坐标系的 所有属性,再返还给"ax"。 ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 %ax.TickLength = [0.02 0.02]; % 设置刻度线的长度 %ax.XLim = [0 6];% 设置横坐标轴的区间 %ax.YLim = [-0.001645-0.000432];% 设置纵坐标轴的区间 %设置图表的名称以及字体大小和格式 %ax.TickLabelInterpreter = 'Times New Roman'; legend({['y_displacements1']},'FontSize',15); title(['y_displacements1 ']); %%------------------------------------------------------------------------------------------------ subplot(2,2,[3,4]) plot(time, displacements1,'o-m','LineWidth',2) %设置图的横坐标名称以及相应字体TimesNewRoman字 体 xlabel('t(s)','FontName','Times New Roman') ylabel('Displacement1(mm)','FontName','Times New Roman') grid on; %设置横坐标间隔长度,设置图表内部网格线为虚线,线粗 为1. %set(gca,'xtick',length_1bar_min:(length_x/element):length_1ba r_max) ; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1); %ax.XLim = [0 6];% 设置横坐标轴的区间 %%fp. LineWidth = 2; ax =gca; %current axes 通过上述语法,"gca"获取到目前的坐标系的 所有属性,再返还给"ax"。 ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax. TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 %ax.TickLength = [0.02 0.02]; % 设置刻度线的长度 %ax.XLim = [0 6];% 设置横坐标轴的区间 %ax.YLim = [-0.001645-0.000432];% 设置纵坐标轴的区间 %设置图表的名称以及字体大小和格式 %ax.TickLabelInterpreter = 'Times New Roman'; legend({['displacements1']},'FontSize',15); title(['displacements1 ']); %% 2.2计算位移时程曲线ROI-2 displacements2 = zeros(frame_num, 1); x_displacements2 = zeros(frame_num, 1); y_displacements2 = zeros(frame_num, 1); for i = 2:frame_num x_displacements2(i) = centroids2(i,1)-centroids2(1,1); y_displacements2(i) = centroids2(i,2)-centroids2(1,2); displacements2(i) = sqrt((centroids2(i,1)-centroids2(1,1))^2 +(centroids2(i,2)-centroids2(1,2))^2); end % 将位移时程曲线转换为时间-位移格式并绘制曲线 %第二步:开始绘制图 %创建一个指定名称(Name)背景色(color)属性的图窗 figure('Name','x_displacements2','color','w'); %绘制3条曲线并设置曲线宽度,曲线线型,曲线数据标记 符号 subplot(2,2,1) plot(time, x_displacements2,'o-m','LineWidth',2) %设置图的横坐标名称以及相应字体TimesNewRoman字 体 xlabel('t(s)','FontName','Times New Roman') ylabel('x_Displacement2(mm)','FontName','Times New Roman') grid on; %设置横坐标间隔长度,设置图表内部网格线为虚线,线粗 为1. %set(gca,'xtick',length_1bar_min:(length_x/element):length_1ba r_max) ; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1); %%fp. LineWidth = 2; ax =gca; %current axes 通过上述语法,"gca"获取到目前的坐标系的 所有属性,再返还给"ax"。 ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 %ax.YLim = [-0.001645-0.000432];% 设置纵坐标轴的区间 %设置图表的名称以及字体大小和格式 %ax.TickLabelInterpreter = 'Times New Roman'; legend({['x_displacements2']},'FontSize',15); title(['x_displacements2 ']); %%------------------------------------------------------------------------------------------------ subplot(2,2,2) plot(time, y_displacements2,'o-m','LineWidth',2) %设置图的横坐标名称以及相应字体TimesNewRoman字 体 xlabel('t(s)','FontName','Times New Roman') ylabel('y_Displacement2(mm)','FontName','Times New Roman') grid on; %设置横坐标间隔长度,设置图表内部网格线为虚线,线粗 为1. %set(gca,'xtick',length_1bar_min:(length_x/element):length_1ba r_max) ; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1); %%fp. LineWidth = 2; ax = gca; %current axes 通过上述语法,"gca"获取到目前的坐标系的 所有属性,再返还给"ax"。 ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 %ax.TickLength = [0.02 0.02]; % 设置刻度线的长度 %ax.XLim = [0 6];% 设置横坐标轴的区间 %ax.YLim = [-0.001645-0.000432];% 设置纵坐标轴的区间 %设置图表的名称以及字体大小和格式 %ax.TickLabelInterpreter = 'Times New Roman'; legend({['y_displacements2']},'FontSize',15); title(['y_displacements2']); %%------------------------------------------------------------------------------------------------ subplot(2,2,[3,4]) plot(time, displacements2,'o-m','LineWidth',2) %设置图的横坐标名称以及相应字体TimesNewRoman字 体 xlabel('t(s)','FontName','Times New Roman') ylabel('Displacement1(mm)','FontName','Times New Roman') grid on; %设置横坐标间隔长度,设置图表内部网格线为虚线,线粗 为1. %set(gca,'xtick',length_1bar_min:(length_x/element):length_1ba r_max) ; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1); %%fp. LineWidth = 2; ax = gca; %current axes 通过上述语法,"gca"获取到目前的坐标系的 所有属性,再返还给"ax"。 %ax.TickLength = [0.02 0.02]; % 设置刻度线的长度 ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 title(['x_displacements3 ']); ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 %ax.TickLength = [0.02 0.02]; % 设置刻度线的长度 %ax.XLim = [0 6];% 设置横坐标轴的区间 %ax.YLim = [-0.001645-0.000432];% 设置纵坐标轴的区间 %设置图表的名称以及字体大小和格式 %ax.TickLabelInterpreter = 'Times New Roman'; legend({['displacements2']},'FontSize',15); title(['displacements2 ']); %% 2.3计算位移时程曲线ROI-3 displacements3 = zeros(frame_num, 1); x_displacements3 = zeros(frame_num, 1); y_displacements3 = zeros(frame_num, 1); for i = 2:frame_num x_displacements3(i) = centroids3(i,1)-centroids3(1,1); y_displacements3(i) = centroids3(i,2)-centroids3(1,2); displacements3(i) = sqrt((centroids3(i,1)-centroids3(1,1))^2 +(centroids3(i,2)-centroids3(1,2))^2); end % 将位移时程曲线转换为时间-位移格式并绘制曲线 %第二步:开始绘制图 %创建一个指定名称(Name)背景色(color)属性的图窗 figure('Name','x_displacements3','color','w'); %绘制3条曲线并设置曲线宽度,曲线线型,曲线数据标记 符号 subplot(2,2,1) plot(time, x_displacements3,'o-m','LineWidth',2) %设置图的横坐标名称以及相应字体TimesNewRoman字 体 xlabel('t(s)','FontName','Times New Roman') ylabel('x_Displacement3(mm)','FontName','Times New Roman') grid on; %设置横坐标间隔长度,设置图表内部网格线为虚线,线粗 为1. %set(gca,'xtick',length_1bar_min:(length_x/element):length_1ba r_max) ; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1); %%fp. LineWidth = 2; ax =gca; %current axes 通过上述语法,"gca"获取到目前的坐标系的 所有属性,再返还给"ax"。 ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 %ax.TickLength = [0.02 0.02]; % 设置刻度线的长度 %ax.XLim = [0 6];% 设置横坐标轴的区间 %ax.YLim = [-0.001645-0.000432];% 设置纵坐标轴的区间 %设置图表的名称以及字体大小和格式 %ax.TickLabelInterpreter = 'Times New Roman'; legend({['x_displacements3']},'FontSize',15); %%------------------------------------------------------------------------------------------------ subplot(2,2,2) plot(time, y_displacements3,'o-m','LineWidth',2) %设置图的横坐标名称以及相应字体TimesNewRoman字 体 xlabel('t(s)','FontName','Times New Roman') ylabel('y_Displacement3(mm)','FontName','Times New Roman') grid on; %设置横坐标间隔长度,设置图表内部网格线为虚线,线粗 为1. %set(gca,'xtick',length_1bar_min:(length_x/element):length_1ba r_max) ; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1); %%fp. LineWidth = 2; ax = gca; %current axes 通过上述语法,"gca"获取到目前的坐标系的 所有属性,再返还给"ax"。 ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 %ax.TickLength = [0.02 0.02]; % 设置刻度线的长度 %ax.XLim = [0 6];% 设置横坐标轴的区间 %ax.YLim = [-0.001645-0.000432];% 设置纵坐标轴的区间 %设置图表的名称以及字体大小和格式 %ax.TickLabelInterpreter = 'Times New Roman'; legend({['y_displacements3']},'FontSize',15); title(['y_displacements3']); %%------------------------------------------------------------------------------------------------ subplot(2,2,[3,4]) plot(time, displacements3,'o-m','LineWidth',2) %设置图的横坐标名称以及相应字体TimesNewRoman字 体 xlabel('t(s)','FontName','Times New Roman') ylabel('Displacement3(mm)','FontName','Times New Roman') grid on; %设置横坐标间隔长度,设置图表内部网格线为虚线,线粗 为1. %set(gca,'xtick',length_1bar_min:(length_x/element):length_1ba r_max) ; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1); %%fp. LineWidth = 2; ax = gca; %current axes 通过上述语法,"gca"获取到目前的坐标系的 所有属性,再返还给"ax"。 ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 plot(time, y_displacements4,'o-m','LineWidth',2) %ax.TickLength = [0.02 0.02]; % 设置刻度线的长度 %ax.XLim = [0 6];% 设置横坐标轴的区间 %ax.YLim = [-0.001645-0.000432];% 设置纵坐标轴的区间 %设置图表的名称以及字体大小和格式 %ax.TickLabelInterpreter = 'Times New Roman'; legend({['displacements3']},'FontSize',15); title(['displacements3 ']); %% 2.4计算位移时程曲线ROI-4 displacements4 = zeros(frame_num, 1); x_displacements4 = zeros(frame_num, 1); y_displacements4 = zeros(frame_num, 1); for i = 2:frame_num x_displacements4(i) = centroids4(i,1)-centroids4(1,1); y_displacements4(i) = centroids4(i,2)-centroids4(1,2); displacements4(i) = sqrt((centroids4(i,1)-centroids4(1,1))^2 +(centroids4(i,2)-centroids4(1,2))^2); end % 将位移时程曲线转换为时间-位移格式并绘制曲线 %第二步:开始绘制图 %创建一个指定名称(Name)背景色(color)属性的图窗 figure('Name','x_displacements4','color','w'); %绘制3条曲线并设置曲线宽度,曲线线型,曲线数据标记 符号 subplot(2,2,1) plot(time, x_displacements4,'o-m','LineWidth',2) %设置图的横坐标名称以及相应字体TimesNewRoman字 体 xlabel('t(s)','FontName','Times New Roman') ylabel('x_Displacement4(mm)','FontName','Times New Roman') grid on; %设置横坐标间隔长度,设置图表内部网格线为虚线,线粗 为1. %set(gca,'xtick',length_1bar_min:(length_x/element):length_1ba r_max) ; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1); %%fp. LineWidth = 2; ax =gca; %current axes 通过上述语法,"gca"获取到目前的坐标系的 所有属性,再返还给"ax"。 ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 %ax.TickLength = [0.02 0.02]; % 设置刻度线的长度 %ax.XLim = [0 6];% 设置横坐标轴的区间 %ax.YLim = [-0.001645-0.000432];% 设置纵坐标轴的区间 %设置图表的名称以及字体大小和格式 %ax.TickLabelInterpreter = 'Times New Roman'; legend({['x_displacements4']},'FontSize',15); title(['x_displacements4 ']); %%------------------------------------------------------------------------------------------------ subplot(2,2,2) %设置图的横坐标名称以及相应字体TimesNewRoman字 体 xlabel('t(s)','FontName','Times New Roman') ylabel('y_Displacement4(mm)','FontName','Times New Roman') grid on; %设置横坐标间隔长度,设置图表内部网格线为虚线,线粗 为1. %set(gca,'xtick',length_1bar_min:(length_x/element):length_1ba r_max) ; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1); %%fp. LineWidth = 2; ax = gca; %current axes 通过上述语法,"gca"获取到目前的坐标系的 所有属性,再返还给"ax"。 ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 %ax.TickLength = [0.02 0.02]; % 设置刻度线的长度 %ax.XLim = [0 6];% 设置横坐标轴的区间 %ax.YLim = [-0.001645-0.000432];% 设置纵坐标轴的区间 %设置图表的名称以及字体大小和格式 %ax.TickLabelInterpreter = 'Times New Roman'; legend({['y_displacements4']},'FontSize',15); title(['y_displacements4']); %%------------------------------------------------------------------------------------------------ subplot(2,2,[3,4]) plot(time, displacements4,'o-m','LineWidth',2) %设置图的横坐标名称以及相应字体TimesNewRoman字 体 xlabel('t(s)','FontName','Times New Roman') ylabel('Displacement4(mm)','FontName','Times New Roman') grid on; %设置横坐标间隔长度,设置图表内部网格线为虚线,线粗 为1. %set(gca,'xtick',length_1bar_min:(length_x/element):length_1ba r_max) ; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1); %%fp. LineWidth = 2; ax = gca; %current axes 通过上述语法,"gca"获取到目前的坐标系的 所有属性,再返还给"ax"。 ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 %ax.TickLength = [0.02 0.02]; % 设置刻度线的长度 %ax.XLim = [0 6];% 设置横坐标轴的区间 %ax.YLim = [-0.001645-0.000432];% 设置纵坐标轴的区间 %设置图表的名称以及字体大小和格式 %ax.TickLabelInterpreter = 'Times New Roman'; legend({['displacements4']},'FontSize',15); title(['displacements4 ']); %% 2.5计算位移时程曲线ROI-5 displacements5 = zeros(frame_num, 1); x_displacements5 = zeros(frame_num, 1); y_displacements5 = zeros(frame_num, 1); for i = 2:frame_num x_displacements5(i) = centroids5(i,1)-centroids5(1,1); y_displacements5(i) = centroids5(i,2)-centroids5(1,2); displacements5(i) = sqrt((centroids5(i,1)-centroids5(1,1))^2 +(centroids5(i,2)-centroids5(1,2))^2); end % 将位移时程曲线转换为时间-位移格式并绘制曲线 %第二步:开始绘制图 %创建一个指定名称(Name)背景色(color)属性的图窗 figure('Name','x_displacements5','color','w'); %绘制3条曲线并设置曲线宽度,曲线线型,曲线数据标记 符号 subplot(2,2,1) plot(time, x_displacements5,'o-m','LineWidth',2) %设置图的横坐标名称以及相应字体TimesNewRoman字 体 xlabel('t(s)','FontName','Times New Roman') ylabel('x_Displacement5(mm)','FontName','Times New Roman') grid on; %设置横坐标间隔长度,设置图表内部网格线为虚线,线粗 为1. %set(gca,'xtick',length_1bar_min:(length_x/element):length_1ba r_max) ; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1); %%fp. LineWidth = 2; ax =gca; %current axes 通过上述语法,"gca"获取到目前的坐标系的 所有属性,再返还给"ax"。 ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 %ax.TickLength = [0.02 0.02]; % 设置刻度线的长度 %ax.XLim = [0 6];% 设置横坐标轴的区间 %ax.YLim = [-0.001645-0.000432];% 设置纵坐标轴的区间 %设置图表的名称以及字体大小和格式 %ax.TickLabelInterpreter = 'Times New Roman'; legend({['x_displacements5']},'FontSize',15); title(['x_displacements5 ']); %%------------------------------------------------------------------------------------------------ subplot(2,2,2) plot(time, y_displacements5,'o-m','LineWidth',2) %设置图的横坐标名称以及相应字体TimesNewRoman字 体 ylabel('y_Displacement5(mm)','FontName','Times New Roman') grid on; %设置横坐标间隔长度,设置图表内部网格线为虚线,线粗 为1. %set(gca,'xtick',length_1bar_min:(length_x/element):length_1ba r_max) ; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1); %%fp. LineWidth = 2; ax = gca; %current axes 通过上述语法,"gca"获取到目前的坐标系的 所有属性,再返还给"ax"。 ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 %ax.TickLength = [0.02 0.02]; % 设置刻度线的长度 %ax.XLim = [0 6];% 设置横坐标轴的区间 %ax.YLim = [-0.001645-0.000432];% 设置纵坐标轴的区间 %设置图表的名称以及字体大小和格式 %ax.TickLabelInterpreter = 'Times New Roman'; legend({['y_displacements5']},'FontSize',15); title(['y_displacements5']); %%------------------------------------------------------------------------------------------------ subplot(2,2,[3,4]) plot(time, displacements5,'o-m','LineWidth',2) %设置图的横坐标名称以及相应字体TimesNewRoman字 体 xlabel('t(s)','FontName','Times New Roman') ylabel('Displacement5(mm)','FontName','Times New Roman') grid on; %设置横坐标间隔长度,设置图表内部网格线为虚线,线粗 为1. %set(gca,'xtick',length_1bar_min:(length_x/element):length_1ba r_max) ; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1); %%fp. LineWidth = 2; ax = gca; %current axes 通过上述语法,"gca"获取到目前的坐标系的 所有属性,再返还给"ax"。 ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 %ax.TickLength = [0.02 0.02]; % 设置刻度线的长度 %ax.XLim = [0 6];% 设置横坐标轴的区间 %ax.YLim = [-0.001645-0.000432];% 设置纵坐标轴的区间 %设置图表的名称以及字体大小和格式 %ax.TickLabelInterpreter = 'Times New Roman'; legend({['displacements5']},'FontSize',15); title(['displacements5 ']); xlabel('t(s)','FontName','Times New Roman') %% 2.6计算位移时程曲线ROI-6 r_max) ; displacements6 = zeros(frame_num, 1); x_displacements6 = zeros(frame_num, 1); y_displacements6 = zeros(frame_num, 1); for i = 2:frame_num x_displacements6(i) = centroids6(i,1)-centroids6(1,1); y_displacements6(i) = centroids6(i,2)-centroids6(1,2); displacements6(i) = sqrt((centroids6(i,1)-centroids6(1,1))^2 +(centroids6(i,2)-centroids6(1,2))^2); end % 将位移时程曲线转换为时间-位移格式并绘制曲线 %第二步:开始绘制图 %创建一个指定名称(Name)背景色(color)属性的图窗 figure('Name','x_displacements6','color','w'); %绘制3条曲线并设置曲线宽度,曲线线型,曲线数据标记 符号 subplot(2,2,1) plot(time, x_displacements6,'o-m','LineWidth',2) %设置图的横坐标名称以及相应字体TimesNewRoman字 体 xlabel('t(s)','FontName','Times New Roman') ylabel('x_Displacement6(mm)','FontName','Times New Roman') grid on; %设置横坐标间隔长度,设置图表内部网格线为虚线,线粗 为1. %set(gca,'xtick',length_1bar_min:(length_x/element):length_1ba r_max) ; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1); %%fp. LineWidth = 2; ax =gca; %current axes 通过上述语法,"gca"获取到目前的坐标系的 所有属性,再返还给"ax"。 ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 %ax.TickLength = [0.02 0.02]; % 设置刻度线的长度 %ax.XLim = [0 6];% 设置横坐标轴的区间 %ax.YLim = [-0.001645-0.000432];% 设置纵坐标轴的区间 %设置图表的名称以及字体大小和格式 %ax.TickLabelInterpreter = 'Times New Roman'; legend({['x_displacements6']},'FontSize',15); title(['x_displacements6 ']); %%------------------------------------------------------------------------------------------------ subplot(2,2,2) plot(time, y_displacements6,'o-m','LineWidth',2) %设置图的横坐标名称以及相应字体TimesNewRoman字 体 xlabel('t(s)','FontName','Times New Roman') ylabel('y_Displacement6(mm)','FontName','Times New Roman') grid on; %设置横坐标间隔长度,设置图表内部网格线为虚线,线粗 为1. %set(gca,'xtick',length_1bar_min:(length_x/element):length_1ba set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1); %%fp. LineWidth = 2; ax = gca; %current axes 通过上述语法,"gca"获取到目前的坐标系的 所有属性,再返还给"ax"。 ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 %ax.TickLength = [0.02 0.02]; % 设置刻度线的长度 %ax.XLim = [0 6];% 设置横坐标轴的区间 %ax.YLim = [-0.001645-0.000432];% 设置纵坐标轴的区间 %设置图表的名称以及字体大小和格式 %ax.TickLabelInterpreter = 'Times New Roman'; legend({['y_displacements6']},'FontSize',15); title(['y_displacements6']); %%------------------------------------------------------------------------------------------------ subplot(2,2,[3,4]) plot(time, displacements6,'o-m','LineWidth',2) %设置图的横坐标名称以及相应字体TimesNewRoman字 体 xlabel('t(s)','FontName','Times New Roman') ylabel('Displacement6(mm)','FontName','Times New Roman') grid on; %设置横坐标间隔长度,设置图表内部网格线为虚线,线粗 为1. %set(gca,'xtick',length_1bar_min:(length_x/element):length_1ba r_max) ; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1); %%fp. LineWidth = 2; ax = gca; %current axes 通过上述语法,"gca"获取到目前的坐标系的 所有属性,再返还给"ax"。 ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 %ax.TickLength = [0.02 0.02]; % 设置刻度线的长度 %ax.XLim = [0 6];% 设置横坐标轴的区间 %ax.YLim = [-0.001645-0.000432];% 设置纵坐标轴的区间 %设置图表的名称以及字体大小和格式 %ax.TickLabelInterpreter = 'Times New Roman'; legend({['displacements6']},'FontSize',15); title(['displacements6 ']); %% 3.0计算y方向的位移时程曲线ROI-all figure('Name','all_y_displacements','color','w'); subplot(2,3,1) plot(time, y_displacements1,'o-m','LineWidth',2) xlabel('t(s)','FontName','Times New Roman') 'out'改成 'in',将刻度线改向朝内) ylabel('y_Displacement1(mm)','FontName','Times New Roman') grid on; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1); ax =gca; ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 ax.XLim = [0 max(time)];% 设置横坐标轴的区间 legend({['y_displacements1']},'FontSize',15); title(['y_displacements1 ']); subplot(2,3,2) plot(time, y_displacements2,'o-m','LineWidth',2) xlabel('t(s)','FontName','Times New Roman') ylabel('y_Displacement2(mm)','FontName','Times New Roman') grid on; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1); ax =gca; ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 ax.XLim = [0 max(time)];% 设置横坐标轴的区间 legend({['y_displacements2']},'FontSize',15); title(['y_displacements2 ']); subplot(2,3,3) plot(time, y_displacements3,'o-m','LineWidth',2) xlabel('t(s)','FontName','Times New Roman') ylabel('y_Displacement3(mm)','FontName','Times New Roman') grid on; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1); ax =gca; ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 ax.XLim = [0 max(time)];% 设置横坐标轴的区间 legend({['y_displacements3']},'FontSize',15); title(['y_displacements3 ']); subplot(2,3,4) plot(time, y_displacements4,'o-m','LineWidth',2) xlabel('t(s)','FontName','Times New Roman') ylabel('y_Displacement4(mm)','FontName','Times New Roman') grid on; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1); ax =gca; ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 ax.XLim = [0 max(time)];% 设置横坐标轴的区间 legend({['y_displacements4']},'FontSize',15); title(['y_displacements4 ']); subplot(2,3,5) plot(time, y_displacements5,'o-m','LineWidth',2) xlabel('t(s)','FontName','Times New Roman') ylabel('y_Displacement5(mm)','FontName','Times New Roman') grid on; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1); ax = gca; ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 ax.XLim = [0 max(time)];% 设置横坐标轴的区间 legend({['y_displacements5']},'FontSize',15); title(['y_displacements5 ']); subplot(2,3,6) plot(time, y_displacements6,'o-m','LineWidth',2) xlabel('t(s)','FontName','Times New Roman') ylabel('y_Displacement6(mm)','FontName','Times New Roman') grid on; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1); ax = gca; ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 ax.XLim = [0 max(time)];% 设置横坐标轴的区间 legend({['y_displacements6']},'FontSize',15); title(['y_displacements6 ']); Part 4. 算法评价 %% 绘图标准模板ROI-1 figure('Name','displacements1','color','w'); %在plot, scatter, surf 等前面加上 figure('units','normalized','outerposition',[0 0 1 1]); plot(time, y_displacements1,'.-m','LineWidth',1.5) %set(gcf, 'unit', 'centimeters', 'position', [10 10 10 10]); %set(gcf, 'Position', [100 100 260 220]); xlabel('t(s)','FontName','Times New Roman') ylabel('y-Displacement1(mm)','FontName','Times New Roman') grid on; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',0.2); ax = gca; ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 ax.XLim = [0 max(time)];% 设置横坐标轴的区间 ax.YLim = [-4 4];% 设置纵坐标轴的区间 legend({['y-displacements1']},'FontSize',15); title(['y-displacements1 ']); %生成0.1s局部放大图 axes('Position',[0.50,0.65,0.2,0.2]); % 生成子图 下 宽窄 左右 上 %分别表示放大图的 [ 水平位置,垂直位置,水平大小(长), 竖直大小(宽)] plot(time, y_displacements1,'.-b','LineWidth',0.7); ax =gca; ax. FontSize = 12;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 xlim([0,0.1]); % 设置坐标轴范围 ylim([-4,4]); %生成0.02s 局部放大图 axes('Position',[0.50,0.20,0.2,0.15]); % 生成子图 下 宽窄 左右 上 %分别表示放大图的 [ 水平位置,垂直位置,水平大小(长), 竖直大小(宽)] plot(time, y_displacements1,'.-r','LineWidth',0.7); ax =gca; ax. FontSize = 12;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 xlim([0,0.03]); % 设置坐标轴范围 ylim([-2,2]); saveas(gcf,['./','block_all_ydis',num2str(1),'.emf']); saveas(gcf,['./','block_all_ydis',num2str(1),'.tiff']); %% 绘图标准模板ROI-2 figure('Name','displacements2','color','w'); %在plot, scatter, surf 等前面加上 figure('units','normalized','outerposition',[0 0 1 1]); plot(time, y_displacements2,'.-m','LineWidth',1.5) %set(gcf, 'unit', 'centimeters', 'position', [10 10 10 10]); %set(gcf, 'Position', [100 100 260 220]); xlabel('t(s)','FontName','Times New Roman') ylabel('y-Displacement2(mm)','FontName','Times New Roman') grid on; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',0.2); ax =gca; ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 ax.XLim = [0 max(time)];% 设置横坐标轴的区间 ax.YLim = [-4 4];% 设置纵坐标轴的区间 legend({['y-displacements2']},'FontSize',15); title(['y-displacements2 ']); %生成0.1s局部放大图 axes('Position',[0.50,0.65,0.2,0.2]); % 生成子图 下 宽窄 左右 上 %分别表示放大图的 [ 水平位置,垂直位置,水平大小(长), 竖直大小(宽)] plot(time, y_displacements2,'.-b','LineWidth',0.7); ax = gca; ax. FontSize = 12;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 xlim([0,0.1]); % 设置坐标轴范围 ylim([-4,4]); %生成0.02s局部放大图 axes('Position',[0.50,0.20,0.2,0.15]); % 生成子图 下 宽窄 左右 上 %分别表示放大图的 [ 水平位置,垂直位置,水平大小(长), 竖直大小(宽)] plot(time, y_displacements2,'.-r','LineWidth',0.7); ax = gca; ax. FontSize = 12;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 xlim([0,0.03]); % 设置坐标轴范围 ylim([-2,2]); saveas(gcf,['./','block_all_ydis',num2str(2),'.emf']); saveas(gcf,['./','block_all_ydis',num2str(2),'.tiff']); %% 绘图标准模板ROI-3 figure('Name','displacements3','color','w'); %在plot, scatter, surf 等前面加上 figure('units','normalized','outerposition',[0 0 1 1]); plot(time, y_displacements3,'.-m','LineWidth',1.5) %set(gcf, 'unit', 'centimeters', 'position', [10 10 10 10]); %set(gcf, 'Position', [100 100 260 220]); xlabel('t(s)','FontName','Times New Roman') ylabel('y-Displacement3(mm)','FontName','Times New Roman') grid on; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',0.2); ax = gca; ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 ax.XLim = [0 max(time)];% 设置横坐标轴的区间 ax.YLim = [-4 4];% 设置纵坐标轴的区间 legend({['y-displacements3']},'FontSize',15); title(['y-displacements3 ']); %生成0.1s局部放大图 axes('Position',[0.50,0.65,0.2,0.2]); % 生成子图 下 宽窄 左右 上 %分别表示放大图的 [ 水平位置,垂直位置,水平大小(长), 竖直大小(宽)] plot(time, y_displacements3,'.-b','LineWidth',0.7); ax =gca; ax. FontSize = 12;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 xlim([0,0.1]); % 设置坐标轴范围 ylim([-4,4]); %生成0.02s 局部放大图 axes('Position',[0.50,0.20,0.2,0.15]); % 生成子图 下 宽窄 左右 上 %分别表示放大图的 [ 水平位置,垂直位置,水平大小(长), 竖直大小(宽)] plot(time, y_displacements3,'.-r','LineWidth',0.7); ax =gca; ax. FontSize = 12;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 xlim([0,0.03]); % 设置坐标轴范围 ylim([-2,2]); saveas(gcf,['./','block_all_ydis',num2str(3),'.emf']); saveas(gcf,['./','block_all_ydis',num2str(3),'.tiff']); %% 绘图标准模板ROI-4 figure('Name','displacements4','color','w'); %在plot, scatter, surf 等前面加上 figure('units','normalized','outerposition',[0 0 1 1]); plot(time, y_displacements4,'.-m','LineWidth',1.5) %set(gcf, 'unit', 'centimeters', 'position', [10 10 10 10]); %set(gcf, 'Position', [100 100 260 220]); xlabel('t(s)','FontName','Times New Roman') ylabel('y-Displacement4(mm)','FontName','Times New Roman') grid on; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',0.2); ax =gca; ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 ax.XLim = [0 max(time)];% 设置横坐标轴的区间 ax.YLim = [-4 4];% 设置纵坐标轴的区间 legend({['y-displacements4']},'FontSize',15); title(['y-displacements4']); %生成0.1s局部放大图 axes('Position',[0.50,0.65,0.2,0.2]); % 生成子图 下 宽窄 左右 上 %分别表示放大图的 [ 水平位置,垂直位置,水平大小(长), 竖直大小(宽)] plot(time, y_displacements4,'.-b','LineWidth',0.7); ax = gca; ax. FontSize = 12;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 xlim([0,0.1]); % 设置坐标轴范围 ylim([-4,4]); %生成0.02s局部放大图 axes('Position',[0.50,0.20,0.2,0.15]); % 生成子图 下 宽窄 左右 上 %分别表示放大图的 [ 水平位置,垂直位置,水平大小(长), 竖直大小(宽)] plot(time, y_displacements4,'.-r','LineWidth',0.7); ax = gca; ax. FontSize = 12;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 xlim([0,0.03]); % 设置坐标轴范围 ylim([-2,2]); saveas(gcf,['./','block_all_ydis',num2str(4),'.emf']); saveas(gcf,['./','block_all_ydis',num2str(4),'.tiff']); %% 绘图标准模板ROI-5 figure('Name','displacements5','color','w'); %在plot, scatter, surf 等前面加上 figure('units','normalized','outerposition',[0 0 1 1]); plot(time, y_displacements5,'.-m','LineWidth',1.5) %set(gcf, 'unit', 'centimeters', 'position', [10 10 10 10]); %set(gcf, 'Position', [100 100 260 220]); xlabel('t(s)','FontName','Times New Roman') ylabel('y-Displacement5(mm)','FontName','Times New Roman') grid on; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',0.2); ax = gca; ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 ax.XLim = [0 max(time)];% 设置横坐标轴的区间 ax.YLim = [-4 4];% 设置纵坐标轴的区间 legend({['y-displacements5']},'FontSize',15); title(['y-displacements5']); %生成0.1s局部放大图 axes('Position',[0.50,0.65,0.2,0.2]); % 生成子图 下 宽窄 左右 上 %分别表示放大图的 [ 水平位置,垂直位置,水平大小(长), 竖直大小(宽)] plot(time, y_displacements5,'.-b','LineWidth',0.7); ax =gca; ax. FontSize = 12;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 xlim([0,0.1]); % 设置坐标轴范围 ylim([-4,4]); %生成0.02s 局部放大图 axes('Position',[0.50,0.20,0.2,0.15]); % 生成子图 下 宽窄 左右 上 %分别表示放大图的 [ 水平位置,垂直位置,水平大小(长), 竖直大小(宽)] plot(time, y_displacements5,'.-r','LineWidth',0.7); ax =gca; ax. FontSize = 12;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 xlim([0,0.03]); % 设置坐标轴范围 ylim([-2,2]); saveas(gcf,['./','block_all_ydis',num2str(5),'.emf']); saveas(gcf,['./','block_all_ydis',num2str(5),'.tiff']); %% 绘图标准模板ROI-6 figure('Name','displacements6','color','w'); %在plot, scatter, surf 等前面加上 figure('units','normalized','outerposition',[0 0 1 1]); plot(time, y_displacements6,'.-m','LineWidth',1.5) %set(gcf, 'unit', 'centimeters', 'position', [10 10 10 10]); %set(gcf, 'Position', [100 100 260 220]); xlabel('t(s)','FontName','Times New Roman') ylabel('y-Displacement6(mm)','FontName','Times New Roman') grid on; set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',0.2); ax =gca; ax. FontSize = 14;% 调整坐标系的数字标度的字体大小 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 ax.XLim = [0 max(time)];% 设置横坐标轴的区间 ax.YLim = [-4 4];% 设置纵坐标轴的区间 legend({['y-displacements6']},'FontSize',15); title(['y-displacements6']); %生成0.1s局部放大图 axes('Position',[0.50,0.65,0.2,0.2]); % 生成子图 下 宽窄 左右 上 %分别表示放大图的 [ 水平位置,垂直位置,水平大小(长), 竖直大小(宽)] plot(time, y_displacements6,'.-b','LineWidth',0.7); ax = gca; ax. FontSize = 12;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 xlim([0,0.1]); % 设置坐标轴范围 ylim([-4,4]); %生成0.02s局部放大图 axes('Position',[0.50,0.20,0.2,0.15]); % 生成子图 下 宽窄 左右 上 %分别表示放大图的 [ 水平位置,垂直位置,水平大小(长), 竖直大小(宽)] plot(time, y_displacements6,'.-r','LineWidth',0.7); ax = gca; ax. FontSize = 12;% 调整坐标系的数字标度的字体大小 ax. LineWidth = 2;% 调整图表的外框线粗 ax.TickDir = 'in';% 设置刻度线朝向图表的外部(当然可以将 'out'改成 'in',将刻度线改向朝内) ax. FontName ='Times New Roman';%设置图标(图名)字体类 型,TimesNew Roman 只对英文和数字有效。 xlim([0,0.03]); % 设置坐标轴范围 ylim([-2,2]); saveas(gcf,['./','block_all_ydis',num2str(6),'.emf']); saveas(gcf,['./','block_all_ydis',num2str(6),'.tiff']); 把这段matlab代码用python重构
06-11
import matplotlib.pyplot as plt import numpy as np import os import matplotlib.patches as patches plt.rcParams["font.family"] = "Times New Roman" plt.rcParams["font.size"] = 16 # Create save directory save_dir = "./saved_figures" if not os.path.exists(save_dir): os.makedirs(save_dir) # Define load levels load_levels = ["Light Load", "Medium Load", "Heavy Load"] # Resource utilization and response times for different scheduling methods (units: % and seconds) static_usage = [70, 80, 85] heuristic_usage = [75, 82, 87] reinforce_usage = [80, 85, 90] static_response = [1.8, 2.3, 2.6] heuristic_response = [1.7, 2.1, 2.4] reinforce_response = [1.4, 1.6, 1.8] # Create bar-line chart fig, ax1 = plt.subplots(figsize=(10, 6)) # Set bar width bar_width = 0.2 index = np.arange(len(load_levels)) # Plot resource utilization bars rects1 = ax1.bar(index - bar_width, static_usage, bar_width, label="Static Allocation (Resource Utilization)", color="gray") rects2 = ax1.bar(index, heuristic_usage, bar_width, label="Heuristic Scheduling (Resource Utilization)", color="royalblue") rects3 = ax1.bar(index + bar_width, reinforce_usage, bar_width, label="Reinforce Algorithm (Resource Utilization)", color="red") ax1.set_xlabel("Load Levels") ax1.set_ylabel("Resource Utilization (%)") ax1.set_xticks(index) ax1.set_xticklabels(load_levels) # Create second Y-axis for response time ax2 = ax1.twinx() rects4 = ax2.bar(index - bar_width, static_response, bar_width, label="Static Allocation (Response Time)", color="lightgray") rects5 = ax2.bar(index, heuristic_response, bar_width, label="Heuristic Scheduling (Response Time)", color="lightblue") rects6 = ax2.bar(index + bar_width, reinforce_response, bar_width, label="Reinforce Algorithm (Response Time)", color="lightcoral") ax2.set_ylabel("Response Time (seconds)") # Add rectangle to highlight Reinforce algorithm's performance isolation and fairness region ax1.add_patch(patches.Rectangle((0.5, 85), 2.5, 6, linewidth=1.5, edgecolor='red', facecolor='none')) ax1.text(1, 88, "Reinforce Performance Isolation & Fairness", color='red', fontsize=14) # Set legend fig.tight_layout() fig.legend(loc="upper center", bbox_to_anchor=(0.5, 1.1), ncol=3) # Save the image plt.savefig(os.path.join(save_dir, "tenant_fairness_isolation_comparison_barline.png"), dpi=300) plt.show() 修改代码:内容要完整展示出来不能有遮挡,修改好之后给出完整的代码
10-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值