copygraphics

Скопируйте график или графическое содержимое к буферу обмена

Описание

пример

copygraphics(obj) копирует содержимое графического объекта, заданного obj к системному буферу обмена. Графический объект может быть любым типом осей, фигуры, графика, который может быть дочерним элементом фигуры, мозаичного размещения графика или контейнера в фигуре. Содержимое буфера обмена доступно для вставки в другие приложения и документы.

пример

copygraphics(obj,Name,Value) задает дополнительные опции для копирования содержимого к буферу обмена. Например, copygraphics(gca,'Resolution',300) копирует содержимое текущей системы координат к буферу обмена как изображение с 300 DPI.

Примеры

свернуть все

Постройте график и получите текущую систему координат. Затем скопируйте содержимое осей к буферу обмена.

plot(rand(5,5))
ax = gca;
copygraphics(ax)

Отобразите изображение и получите текущую систему координат. Затем скопируйте содержимое осей как изображение с 300 DPI.

I = imread('peppers.png');
imshow(I)
ax = gca;
copygraphics(ax,'Resolution',300)

Отобразите график с аннотацией, которая расширяет вне границ осей. Затем скопируйте содержимое фигуры.

plot(1:10)
annotation('textarrow',[0.06 0.5],[0.73 0.5],'String','y = x ')
f = gcf;
copygraphics(f)

Отобразите столбчатую диаграмму и получите текущую систему координат. Затем скопируйте содержимое осей как векторное изображение.

bar([10 22 31 43])
ax = gca;
copygraphics(ax,'ContentType','vector')

Отобразите два графика в мозаичном размещении графика. Затем скопируйте оба графика в буфер обмена путем передачи TiledChartLayout возразите против copygraphics функция.

t = tiledlayout(2,1);
nexttile
plot([1 2 3])
nexttile
plot([3 2 1])
copygraphics(t)

Если вы хотите скопировать только один из графиков, вызовите nexttile функция с возвращаемым аргументом осей. Затем передайте оси copygraphics функция.

Отобразите график тепловой карты. Затем скопируйте график как векторное изображение и задайте прозрачный фон.

h = heatmap(rand(10,10));
copygraphics(h,'ContentType','vector','BackgroundColor','none')

Создайте программный файл под названием copyapp.m это отображает график и кнопку для копирования содержимого осей к буферу обмена. В функции обратного вызова для кнопки вызовите copygraphics функция.

function copyapp
f = uifigure;
ax = uiaxes(f,'Position',[25 25 400 375]);
plot(ax,[0 0.3 0.1 0.6 0.4 1])
b = uibutton(f,'Position',[435 200 90 30],'Text','Copy Plot');
b.ButtonPushedFcn = @buttoncallback;

    function buttoncallback(~,~)
        copygraphics(ax)
    end
end

Запустите приложение путем вызова copyapp функция. Когда вы нажимаете кнопку Copy Plot, содержимое осей копируется в буфер обмена. Область, окружающая оси, включая кнопку, не копируется.

copyapp

Входные параметры

свернуть все

Графический объект в виде одного из этих объектов:

  • Любой тип осей: Axespolaraxes, или GeographicAxes объект.

  • Фигура создала с любым figure или uifigure функция.

  • График, который может быть дочерним элементом фигуры. Например, heatmap график может быть дочерним элементом фигуры.

  • Мозаичное размещение графика, которое вы создаете с tiledlayout функция.

  • Контейнер в фигуре: Panel, Tab, или ButtonGroup объект.

Получите область

copygraphics получает содержимое объекта, который вы задаете. Это не получает компоненты пользовательского интерфейса, такие как кнопки или ползунки.

Это также не получает смежные контейнеры или дочерние контейнеры. Например, рассмотрите фигуру, содержащую линейный график со смежной панелью, содержащей тепловую карту:

f = figure;
ax = axes(f,'Position',[0.1 0.1 0.4 0.8]);
plot(ax,[0 1])
p = uipanel(f,'Position',[0.55 0.1 0.4 0.8]);
heatmap(p,rand(10,5))

copygraphics(f)
copygraphics(p)

В предыдущем коде, первом copygraphics команда копирует линейный график, но не тепловую карту. Второй copygraphics команда копирует тепловую карту, но не линейный график.

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: copygraphics(gca,'Resolution',300) копирует содержимое текущей системы координат как изображение с 300 DPI.

Тип содержимого, чтобы скопировать в виде одной из этих опций:

  • 'auto' — MATLAB®controls, является ли содержимое векторным изображением или изображением.

  • 'vector' — Копирует содержимое как векторное изображение, которое может масштабироваться к любому размеру.

  • 'image' — Копирует содержимое как растеризированное изображение.

Разрешение в точках на дюйм (DPI) в виде целого числа, которое больше или равно 1.

Определение разрешения не оказывает влияния когда ContentType isvector.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Цвет фона в виде 'current''none', триплет RGB, шестнадцатеричный цветовой код или название цвета. Цвет фона управляет цветом поля, которое окружает оси или график.

  • Значение 'current' выбирает цвет фона к цвету родительского контейнера.

  • Значение 'none' выбирает цвет фона к прозрачному или белому, в зависимости от значения ContentType:

    • Когда ContentType='vector', цвет фона прозрачен.

    • Когда ContentType='image', цвет фона является белым.

    • Когда ContentType='auto', MATLAB выбирает цвет фона согласно эвристике, которую это использует, чтобы определить содержимое типа, чтобы скопировать.

  • В качестве альтернативы задайте пользовательский цвет или именованный цвет.

Пользовательские цвета и именованные цвета

Триплеты RGB и шестнадцатеричные цветовые коды полезны для определения пользовательских цветов.

  • Триплет RGB представляет собой трехэлементный вектор-строку, элементы которого определяют интенсивность красных, зеленых и синих компонентов цвета. Интенсивность должна быть в области значений [0,1]; например, [0.4 0.6 0.7].

  • Шестнадцатеричный цветовой код является вектором символов или строковым скаляром, который запускается с символа хеша (#) сопровождаемый тремя или шестью шестнадцатеричными цифрами, которые могут лежать в диапазоне от 0 к F. Значения не являются чувствительными к регистру. Таким образом, цветовые коды '#FF8800', '#ff8800', '#F80', и '#f80' эквивалентны.

Кроме того, вы можете задать имена некоторых простых цветов. Эта таблица приводит опции именованного цвета, эквивалентные триплеты RGB и шестнадцатеричные цветовые коды.

Название цветаКраткое названиеТриплет RGBШестнадцатеричный цветовой кодВнешний вид
'red''r'[1 0 0]'#FF0000'

'green''g'[0 1 0]'#00FF00'

'blue''b'[0 0 1]'#0000FF'

'cyan' 'c'[0 1 1]'#00FFFF'

'magenta''m'[1 0 1]'#FF00FF'

'yellow''y'[1 1 0]'#FFFF00'

'black''k'[0 0 0]'#000000'

'white''w'[1 1 1]'#FFFFFF'

Вот являются триплеты RGB и шестнадцатеричные цветовые коды для цветов по умолчанию использованием MATLAB во многих типах графиков.

Триплет RGBШестнадцатеричный цветовой кодВнешний вид
[0 0.4470 0.7410]'#0072BD'

[0.8500 0.3250 0.0980]'#D95319'

[0.9290 0.6940 0.1250]'#EDB120'

[0.4940 0.1840 0.5560]'#7E2F8E'

[0.4660 0.6740 0.1880]'#77AC30'

[0.3010 0.7450 0.9330]'#4DBEEE'

[0.6350 0.0780 0.1840]'#A2142F'

Ограничения

copygraphics функция не поддерживается в MATLAB Online или в веб-приложениях, размещенных на MATLAB Web App Server™.

Альтернативная функциональность

Наведение на кнопку Export на панели инструментов осей показывает выпадающее меню с опциями для экспорта содержимого:

  • : Сохраните содержимое как плотно кадрированное изображение или PDF.

  • : Скопируйте содержимое как изображение.

  • : Скопируйте содержимое как векторное изображение.

Смотрите также

Введенный в R2020a