MATLAB
Aula 05
Gráficos II
Jan K. S. – janks@[Link]
ENG 1118 – Tópicos Especiais
90 1
120 2 60
100
2500
0.9
90 1.5
150 30 0.8
80 1 2000
70 0.7
0.5
1500
60 0.6
180 0 0
50 0.5
1000
40
0.4
30
210 330 500
0.3
20
0.2
10 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
240 300
0 10 20 30 40 50 60 70
270
35 2
30 1.5
1
25
0.5
20
0
15
-0.5
10
-1
5 -1.5
0 -2
1 3
0.5 1 2.5 2
0 0.5 2 1.5
0 1
-0.5 1.5
-0.5 0.5
-1 -1 1 0
Exemplos de Mais Gráficos
Mais Gráficos 2D
Gráficos com Escala Logaritmica
>> semanas = 1:9;
>> casos = [2 20 227 2036 9172 27980 63927
101739 132547];
>> plot(semanas, casos);
>> grid on;
>> figure;
>> semilogy(semanas, casos);
>> grid on;
Motivação para Uso da Escala Logarítmica num Eixo
Ruim de ler os valores
?
Tipo de Escala Comando
Escala Log no Eixo X semilogx
Escala Log no Eixo Y semilogy
Escala Log nos Dois Eixos loglog
Earthworks Cardioid Microphone
Antenna Radiation Pattern
Coordenadas Polares
>> theta = linspace(0, 6 * pi, 1000);
>> rho = theta / 10;
>> polarplot(theta, rho);
Gráfico em Coordenadas Polares
Gráficos com Margens de Erro
>> x = 0 : 10 : 70;
>> y = [20 30 45 40 60 65 80 70];
>> margens = [8 10 3 2 14 7 11 6];
>> errorbar(x, y, margens);
Gráfico com Margens de Erro
>> x = 0 : 10 : 70;
>> y = [20 30 45 40 60 65 80 70];
>> margens = [8 10 3 2 14 7 11 6];
>> errorbar(x, y, margens, "r*");
similar às opções da função plot
Gráfico com Margens de Erro
>> x = 0 : 10 : 70;
>> y = [20 30 45 40 60 65 80 70];
>> yNeg = [8 10 3 2 14 7 11 6];
>> yPos = [3 0 12 2 7 9 4 1];
>> xNeg = [1 3 5 3 5 3 6 4];
>> xPos = [2 5 3 5 2 5 2 2];
>> errorbar(x, y, yNeg, yPos, xNeg, xPos);
Gráfico com Margens de Erro
Histogramas
>> avaliacoes = [4 2 5 1 3 2 4 3 1 3 3 4];
>> histogram(avaliacoes);
>> xticks(1:5);
Histograma
número 3 apareceu
4 vezes no vetor
vetor de 1000 números aleatórios
>> x = randn(1, 1000); em uma distribuição gaussiana
>> histogram(x);
Histograma de Números Aleatórios
>> x = randn(1, 1000);
>> limites = [-3 -2 -1 0 1 2 3];
>> histogram(x, limites);
Histograma com Limites Específicas
Gráficos de Dispersão
>> x = [0.3 1 2 2.8];
>> y = [0.3 2.7 1 2];
>> areas = [400 1000 100 5000];
>> scatter(x, y, areas);
Gráfico de Dispersão
matriz 1x20 (vetor de 20 elementos)
>> x = rand(1, 20); de números reais aleatórios entre 0 e 1
>> y = rand(1, 20);
>> areas = rand(1, 20) * 5000;
>> scatter(x, y, areas);
Gráfico de Dispersão com Valores Aleatórios
>> x = rand(1, 10);
>> y = rand(1, 10);
>> areas = rand(1, 10) * 5000;
>> valores = rand(1, 10) * 5000;
>> scatter(x, y, areas, valores, "filled");
>> colorbar; adiciona barra de com legenda de cores
Gráfico de Dispersão com Cores
Gráficos 3D
z
Linhas em 3D
(1,3)
x y
(3,2)
0 0
1 3 plotar
2 -1 (0,0)
3 2
(2,-1)
Plotagem Numérica de Linha 2D
x y z (0,0,7)
0 0 7 (1,3,5)
(3,2,4)
1 3 5 plotar
2 -1 1
3 2 4
(2,-1,1)
Plotagem Numérica de Linha 3D
>> x = [0, 1, 2, 3];
>> y = [0, 3, -1, 2];
>> z = [7, 5, 2, 4];
>> plot3(x, y, z);
Função plot3
>> t = 0 : pi/50 : 10*pi;
>> x = sin(t);
>> y = cos(t);
>> z = t;
>> plot3(x, y, z);
Linha 3D Parametrizada
vetor matriz
Plotagem 3D: Linhas vs Superfícies
z
Superfícies em 3D
z
Z em Função de Pontos no Planos XY
z
Como Criar os Pontos no Plano XY?
y
3
(0,3) (1,3) (2,3)
2
(0,2) (1,2) (2,2)
1
(0,1) (1,1) (2,1)
x
0 1 2
Como Criar os Pontos no Plano XY?
⎡ 0 1 2 ⎤
⎢ ⎥
X=⎢ 0 1 2 ⎥
⎢⎣ 0 1 2 ⎥⎦
(0,1) (1,1) (2,1)
(0,2) (1,2) (2,2)
(0,3) (1,3) (2,3) ⎡ 1 1 1 ⎤
⎢ ⎥
Y=⎢ 2 2 2 ⎥
⎢ 3 3 3 ⎥
⎣ ⎦
Como Criar os Pontos no Plano XY?
⎡ 0 1 2 ⎤
⎢ ⎥
x=⎡ 0 1 2 ⎤ X=⎢ 0 1 2 ⎥
⎣ ⎦
⎢⎣ 0 1 2 ⎥⎦
meshgrid
⎡ 1 1 1 ⎤
y=⎡ 1 2 3 ⎤ ⎢ ⎥
⎣ ⎦ Y=⎢ 2 2 2 ⎥
⎢⎣ 3 3 3 ⎥⎦
Função meshgrid
>> x = 0 : 2; vetor x
>> y = 1 : 3; vetor y
>> [X, Y] = meshgrid(x, y); matrizes X e Y
>> Z = log(X + 1) + 0.01 * Y + 1; matriz Z
>> surf(X, Y, Z);
Superfícies em 3D: meshgrid + surf
>> x = 0 : 0.1 : 2;
>> y = 1 : 0.1 : 3;
>> [X, Y] = meshgrid(x, y);
>> Z = log(X + 1) + 0.01 * Y + 1;
>> surf(X, Y, Z);
Superfícies em 3D: meshgrid + surf
>> x = 0 : 0.05 : 2;
>> y = 1 : 0.05 : 3;
>> [X, Y] = meshgrid(x, y);
>> Z = sin(9 * X) + sin(7 * Y);
>> surf(X, Y, Z);
Superfícies em 3D: meshgrid + surf
Mapa de Cor e de Níveis
>> x = 0 : 0.05 : 2;
>> y = 1 : 0.05 : 3;
>> [X, Y] = meshgrid(x, y);
>> Z = sin(9 * X) + sin(7 * Y);
>> imagesc(x, y, Z);
>> colorbar; ATENÇÃO: esta função recebe os vetores x e y
em vez das matrizes X e Y
Projeção 2D de uma Superfície 3D
>> x = 0 : 0.05 : 2;
>> y = 1 : 0.05 : 3;
>> [X, Y] = meshgrid(x, y);
>> Z = sin(9 * X) + sin(7 * Y);
>> imagesc(x, y, Z);
>> colorbar;
>> caxis([0 2]); define limites da legenda de cor para 0 e 2
Projeção 2D de uma Superfície 3D
>> x = 0 : 0.05 : 2;
>> y = 1 : 0.05 : 3;
>> [X, Y] = meshgrid(x, y);
>> Z = sin(9 * X) + sin(7 * Y);
>> contour(X, Y, Z);
>> colorbar;
Contornos de Relevo
>> x = 0 : 0.05 : 2;
>> y = 1 : 0.05 : 3;
>> [X, Y] = meshgrid(x, y);
>> Z = sin(9 * X) + sin(7 * Y);
>> contour(X, Y, Z, 4); gera apenas 4 níveis de relevo
>> colorbar;
Especificação da Quantidade de Contornos de Relevo
>> x = 0 : 0.05 : 2;
>> y = 1 : 0.05 : 3;
>> [X, Y] = meshgrid(x, y);
>> Z = sin(9 * X) + sin(7 * Y);
>> contour(X, Y, Z, 4, "Fill", "on");
>> colorbar;
Contornos de Relevo Preenchidos
hum… posso usar o Matlab para criar estampas…
Mais Firulas
Botões da Janela de Gráficos
interface antiga
interface nova
Interface Antiga x Interface Nova
Ferramentas do Gráfico
Propriedades da Janela
Propriedades da Tela
Propriedades da Curva
Propriedades da Curva
Propriedades da Curva
Marcação de um Ponto
clique para selecionar
e mover o ponto
shift + clique para
marcar outro ponto
Marcação de Vários Pontos
Interatividades Extras nas Versões Recentes do Matlab
Salvando o Gráfico
Copiando a Imagem do Gráfico
>> % comandos no estilo antigo
>> plot(x, y, "LineWidth", 20, "Color", ...
[0.8 0 0.8], "Marker", "o");
>> % comandos no estilo novo
>> linha = plot(x, y);
>> [Link] = 20;
>> [Link] = [0.8 0 0.8];
>> [Link] = 'o';
Ajuste de Propriedades de Gráfico via Programação
>> x = 0 : 10;
>> y = x * 2;
>> linha = plot(x, y)
linha =
Line with properties: objeto da classe "Line"
Color: [0 0.4470 0.7410]
LineStyle: '-'
LineWidth: 1
Marker: 'none'
MarkerSize: 6
MarkerFaceColor: 'none'
XData: [0 1 2 3 4 5 6 7 8 9 10]
YData: [0 1 2 3 4 5 6 7 8 9 10]
ZData: [1×0 double]
Show all properties
Propriedades de Linhas de Gráfico
>> x = 0 : 10;
>> y = x * 2;
>> linha = plot(x, y);
>> [Link] = 10; espessura da linha
valores RGB de cor
>> [Link] = [0.8 0 0.8]; (entre 0 e 1)
>> [Link] = "o"; tipo de ponto
>> [Link] = 15; tamanho do ponto
>> [Link] = [0.8 0 0.8];
Propriedades de Linhas de Gráfico
>> barras = bar(x, y)
barras = >> superficie = surf(X, Y, Z)
Bar with properties: superficie =
Surface with properties:
BarLayout: 'grouped' EdgeColor: [0 0 0]
BarWidth: 0.8000 LineStyle: '-'
FaceColor: 'flat' FaceColor: 'flat'
EdgeColor: [0 0 0] FaceLighting: 'flat'
BaseValue: 0 FaceAlpha: 1
XData: [0 1 2 3] XData: [1 2]
YData: [0 2 4 6] YData: [2×1 double]
ZData: [2×2 double]
Show all properties CData: [2×2 double]
Show all properties
>> areas = area(x, y)
areas =
Area with properties:
FaceColor: 'flat' >> barras = bar(x, y)
EdgeColor: [0 0 0] imagem =
LineStyle: '-' Image with properties:
LineWidth: 0.5000
BaseValue: 0 CData: [1 2]
XData: [1 2 3 4 5] CDataMapping: 'scaled'
YData: [1 2 3 4 5]
Show all properties
Show all properties
Outras Propriedades de Gráfico
esquerda, fundo, comprimento e altura
>> janela = figure;
>> [Link] = [60 100 500 300];
>> bar(1:10, [1:10; 2:2:20]');
>> xlim([0 11]);
>> legenda = legend(["Barras 1" "Barras 2"]);
>> [Link] = "northwest"; NW N NE
W E
SW S SE
Ajustando a Posição da Janela e da Legenda
500
noroeste
300
60
100
>> x = linspace(0, 10, 200);
>> y1 = sin(3 * x);
>> plot(x, y1);
>> hold on;
>> y2 = sin(3 * x) .* exp(0.7 * x);
>> plot(x, y2);
Problema de Dois Gráficos com Escalas Muito Diferentes
hum… o seno azul
teve parada cardíaca?
>> x = linspace(0, 10, 200);
>> y1 = sin(3 * x);
>> yyaxis left;
>> plot(x, y1)
>> hold on
>> y2 = sin(3 * x) .* exp(0.7 * x);
>> yyaxis right;
>> plot(x, y2)
Dois Eixos Y no Mesmo Gráfico
>> bar(1 : 10, 11 : 20);
>> saveas(gcf, "[Link]"); salva como imagem
>> savefig(gcf, "[Link]");
salva como gráfico do Matlab
(podendo reabrir e editar depois)
referência à janela atual
(graphic current figure)
Salvando Gráficos da Janela Atual
Resumo da Ópera
Funcionalidade Comandos
errorbar(x, y, margens)
scatter(x, y, areas, valores)
histogram(valores)
Mais Gráficos 2D semilogx(x, y); semilogy(x, y)
loglog(x, y)
polarplot(x, y)
plot3(x, y, z)
[X, Y] = meshgrid(x, y)
Gráficos 3D surf(X, Y, Z)
imagesc(x, y, Z); colorbar
contour(X, Y, Z); caxis([min max])
propriedadesDaJanela = figure
propriedadesDaLinha = plot(x, y)
propriedadesDaLegenda = legend(…)
Mais Firulas yyaxis left; yyaxis right;
saveas(gcf, "[Link]")
savefig(gcf, "[Link]")
Resumo da Aula 05
Funcionalidade Comandos
Linha 2D plot(x, y, "tipo de linha");
stem(x, y)
area(x, y)
bar(x, y)
Gráficos Discretos 2D bar(["Texto1" "Texto2"], y)
barh(x, y)
pie(y)
figure
subplot(linhas, colunas, selecao)
hold on
title("titulo");
legend(["curva 1" "curva 2"])
Firulas xlabel("x"); ylabel("y")
lista de caracteres especiais
xlim([min max]); ylim([min max])
grid on
xticks([0 4 7])
Resumo da Aula 04
Funcionalidade Comandos
Ajuda Sobre uma Função help <nome da função>
sin, cos, tan,
asin, acos, atan
sind, cosd, tand,
Funções Matemáticas Básicas asind, acosd, atand
exp, log, log2, log10
sqrt, nthroot, abs
rem, round, ceil, floor
sum, prod, mean
Funções entre Elementos max, min
linspace, repelem
Funções Vetoriais / Matriciais rand, randi, randn
numel, size
Resumo da Aula 03
Funcionalidade Comandos
x = [[1, 2]; [3, 4]]
Declaração de Matrizes x = [1 2; 3 4]
Matrizes com Valores x = repmat(5, 2, 3)
Repetidos x = repmat([7 8 9], 2, 3)
x(1); x(3 : end);
Acesso a Elementos x(1, 2); x(2:4, [1 5 3]); x(:, 3);
x(1) = 3; x(1:7) = 3;
Alteração de Elementos x([1 2]) = [0 7]; x(1, :) = [];
Concatenações [x y]; [x; y];
x + y; x - y;
Operações x .* y; x ./ y; x .^ 2;
posicoes = find(x >= 3);
Busca e Substituição x(posicoes) = 0
x = [2; 4]; x(:, :, 2) = [1; 5];
Matrizes Tridimensionais x(2, 3, 2); repmat(13, 2, 4, 3);
Resumo da Aula 02
Funcionalidade Comandos
Números -2.4; 3.8e-10; pi; Inf; NaN; i;
x = 2.4; a_B_c2 = 9;
x = [1, 2, 3]; x = [1 2 3];
Criação de Variáveis y = 0 : 6;
z = 2 : -0.5 : 0;
x(1); x(2); x(end); x(end - 1);
Acesso a Elementos x([1 2]); x(3 : end);
x(1) = 3;
Alteração de Elementos x(1:7) = 3; x([1 2]) = [0 7];
x(1) = []; x(5:7) = [];
Concatenação [[2 4], 1:4]; [x y]; [x 3];
x + 2; x - 2; x + y; x - y;
x * 2; x .* y;
Operações Matemáticas x / 2; x ./ y;
x .^ 2; x .^ y;
Resumo da Aula 01