Форум кафедры Техники и Электрофизики Высоких Напряжений

Онлайн-сообщество ТВНщиков
Гостям форума:

Добро пожаловать на форум по технике высоких напряжений!
Для получения доступа ко всем разделам необходимо зарегистрироваться


Текущее время: 15 окт 2019, 10:18

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
СообщениеДобавлено: 15 фев 2011, 11:26 
Не в сети
Аватара пользователя

Зарегистрирован: 03 сен 2008, 16:08
Сообщения: 240
Откуда: Д-3
При использовании графопостроителя Matlab имеются следующие недостатки, касающиеся проставления значений на осях графиков:
1) не работает интерпретатор специальных символов, т.е. на осях невозможно отобразить нижний и верхний индексы, греческие буквы и т.д.;
2) не имеется возможность повернуть отображаемые на осях символы.

Ниже показан пример построения графика, в котором возникают указанные недостатки.
Код:
clear,clc, close all
% Исходные данные для построения графиков
x = 0:0.01:2*pi;
y1 = sin(x);
y2 = 0.5*cos(2*x);

figure
set(gcf,'defaultAxesFontName','Times New Roman') % задание имени шрифта
set(gcf,'defaultAxesFontSize',14) % задание размера шрифта
plot(x,[y1;y2],'LineWidth',2.0)
grid
xlim([0 2*pi]) % левый и правый пределы по оси x

axesX_value = [0 pi/4 pi/2 3*pi/4 pi 5*pi/4 3*pi/2 7*pi/4  2*pi];
% задание значений, которые должны отображаться на оси x
axesX_text = {'0' '\pi/4' '\pi/2' '3\pi/4' '\pi' '5\pi/4' '3\pi/2' '7\pi/4' '2\pi'};
% задание символов, которые будут отображаться вместо выше заданных
% значений на оси x

axesY_value = [-1 -0.5 0 0.5 1];
% задание значений, которые должны отображаться на оси y
axesY_text = {'-U_m' '-0,5U_m' '0' '0,5U_m' 'U_m'};
% задание символов, которые будут отображаться вместо выше заданных
% значений на оси y

set(gca,'XTick',axesX_value) % отображение заданных значений по оси x
set(gca,'XTickLabel',axesX_text) % отображение заданных символов вместо
% значений по оси x
set(gca,'YTick',axesY_value) % отображение заданных значений по оси y
set(gca,'YTickLabel',axesY_text) % отображение заданных символов вместо
% значений по оси y

Результат исполнения кода:

Изображение

Как видим не сработал нижний индекс (U_m) и не отобразилась греческая буква "пи" (\pi).


Для того чтобы преодолеть указанные затруднения при проставлении значений на осях графиков, можно поступить следующим образом. При проставлении символов (значений) на осях графиков следует использовать функцию text, входными параметрами которой являются координаты x и y отображаемого символа, сам символ и настройки.
Код:
text(x,y,'symbol','PropertyName','PropertyValue'...)


Ниже показан пример с использованием предложенного подхода. Для его применения нужно дополнить выше приведенный код следующим фрагментом.
Код:
deltaVert = -1.15; % смещение символов на оси x по вертикали
deltaHoriz = -0.15; % смещение символов на оси y по горизонтали
size_text = 20; % размер текста по осям x и y

% выставление в цикле заданных символов axesX_value для указанных
% значений axesX_text на оси x
for k = 1:length(axesX_value)
        text(axesX_value(k),deltaVert,axesX_text(k),'HorizontalAlignment','center',...
            'FontSize',size_text,'FontName','Times New Roman','Rotation',0)
end

% выставление в цикле заданных символов axesY_value для указанных
% значений axesY_text на оси y
for k = 1:length(axesY_value)
text(deltaHoriz,axesY_value(k),axesY_text(k),'HorizontalAlignment','right',...
    'FontSize',size_text,'FontName','Times New Roman','Rotation',0)
end


Результат исполнения кода:

Изображение

Как видно, теперь сработал нижний индекс () и отобразилась греческая буква "пи" (). Но при выбранном размере шрифта (шрифт очень крупный, но это необходимо когда строятся графики для слайд-презентаций и плакатов) символы на оси x слишком близко расположены друг к другу или вообще могут наезжать друг на друга. В таком случае можно повернуть символы на определенный угол, к примеру на 45 градусов. Рассмотрим фрагмент кода, в котором задается угол поворота текста.

Код:
% выставление в цикле заданных символов axesX_value для указанных
% значений axesX_text на оси x
for k = 1:length(axesX_value)
    if axesX_value(k) == 0
        text(axesX_value(k),deltaVert,axesX_text(k),'HorizontalAlignment','center',...
            'FontSize',size_text,'FontName','Times New Roman','Rotation',0)
    else
        text(axesX_value(k),deltaVert,axesX_text(k),'HorizontalAlignment','center',...
            'FontSize',size_text,'FontName','Times New Roman','Rotation',45)
    end
end

В результате изменения указанного фрагмента кода получаем:

Изображение


Дополнение

Для приведенных выше примеров выставления символов по осям с помощью функции text следует сделать пояснение касательно задаваемых свойств, а именно о выравнивании символа относительно задаваемых координат его расположения. Если для функции text не задавать значений свойства 'HorizontalAlignment', т.е. оставить по умолчанию, то привязка координаты расположения символа будет осуществлена к середине слева, как это показано на рисунке ниже.

Изображение

В приведенных же выше примерах используются следующие значения свойства 'HorizontalAlignment':
 - для символов на оси x 'center' - привязка координат к центру
Код:
text(axesX_value(k),deltaVert,axesX_text(k),'HorizontalAlignment','center',...
            'FontSize',size_text,'FontName','Times New Roman','EdgeColor','k','Rotation',0)

 - для символов на оси y 'right' - привязка координат к середине справа
Код:
text(deltaHoriz,axesY_value(k),axesY_text(k),'HorizontalAlignment','right',...
    'FontSize',size_text,'FontName','Times New Roman','EdgeColor','k','Rotation',0)


Изображение


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
СообщениеДобавлено: 15 фев 2011, 12:13 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 03 сен 2008, 17:00
Сообщения: 339
Откуда: Д-4а
:clap:
Молодец!


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
СообщениеДобавлено: 15 фев 2011, 17:10 
Не в сети
Site Admin

Зарегистрирован: 03 сен 2008, 16:09
Сообщения: 4285
Откуда: Д-3
Да, это для сильных духом ))

Респект, для оформления дипломных плакатов самое оно!


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
СообщениеДобавлено: 28 ноя 2011, 18:44 
Не в сети
Варвар Андреич
Аватара пользователя

Зарегистрирован: 20 май 2009, 17:24
Сообщения: 230
О спасибо!!! :prekl:

Значения не выставляла, но размер и тип шрифта поменять было просто необходимо.
Я конечно люблю Corel Draw, но для тучи кривых менять значения там замучаешься.

_________________
Мыши плакали, кололись, но продолжали жрать кактус..
Отныне каждое мое сообщение будет проходить двухфазную смысловую и грамматическую проверку. 13.02.13


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB