Рисование графиков в С++
Если использовать Code::Blocks и mingw, то нужно подключить библиотеку freeglut или freeglut_static (во втором случае нужно также установить макрос FREEGLUT_STATIC), а также opengl32, winmm, gdi32. Подключить в проекте заголовочный файл include/easy_plot.hpp, указать С++11 или выше.
Пример того, что может рисовать эта библиотека:
Пример кода
Рисование тепловой карты
Особенности библиотеки:
- Функция plot может принимать такие параметры, как имя окна, стиль окна (различные настройки цвета и пр., см. WindowSpec), данные графиков и стиль линий.
- Функция draw_heatmap может принимать такие параметры, как имя окна, стиль окна (различные настройки цвета и пр., см. WindowSpec), данные массива тепловой карты типа float и размер тепловой карты.
- Если графиков несколько, изначально они будут расположены по всему экрану равномерно.
- Если навести курсор мыши на график, можно узнать номер линии и данные по осям X и Y.
- Рисование графиков и тепловой карты происходит в отдельном потоке.
- При повторном вызове функции с уже существующим именем окна график будет перерисован.
- Можно сохранить график
- Ключевые слова: , , , , , , , , , ,
- хорошо
- 27
- 06 декабря 2019, 13:30
И зачем такие сложности. Встроенных возможностей вполне хватает и без OpenGL.
- 06 декабря 2019, 13:34
- 06 декабря 2019, 13:54
- 06 декабря 2019, 16:17
- 06 декабря 2019, 16:19
- 06 декабря 2019, 18:06
- 06 декабря 2019, 18:19
- 06 декабря 2019, 14:00
- 06 декабря 2019, 14:12
- 06 декабря 2019, 16:59
- 06 декабря 2019, 14:14
- 06 декабря 2019, 14:14
- 06 декабря 2019, 14:43
- 06 декабря 2019, 17:00
- 06 декабря 2019, 22:33
- 06 декабря 2019, 15:21
- 06 декабря 2019, 16:00
Как всё сложно у С++’ников. серьёзный подход. даже сказал бы профессиональный. На пайтон такие вещи попроще делаются.
последний раз графику использовал на c++ когда учился и писал в borland C. там это было примерно также просто как и на turbo pascal/qbasic. цикл по X, вычисление координат из функции (y) с масштабированием, постановка точки через point (ну или можно и lineto, если точек недостаточно).
- 06 декабря 2019, 18:48
Gregori, C++ только для профессионалов.
- 07 декабря 2019, 03:56
- 07 декабря 2019, 12:53
elektroyar, первая жесть — это потенциально «размножающиеся» static-переменные в заголовочном файле, особенно mutex. Если я разобью свою программу на несколько модулей (файлов), каждый из которых включит заголовочный файл библиотеки, то у меня появится несколько mutex’ов, по одному на каждый модуль. Всё, защита от race condition сломана.
Добиться того, чтобы mutex все равно был только один, можно, вот пример с несколькими модулями, где показано, что из разных модулей в вашем коде получается разный адрес mutex’а, то есть, их там много.
А также дана правильная реализация, чтобы адрес был один на программу, то есть, чтобы mutex был единственным.
Вторая жесть — это то, что код не является exception-safe там, где это жизненно необходимо.
Вы защищаете mutex’ом изменения drawings. Перед изменением drawings соответствующий mutex lock’чится, после изменения — раз’lock’чивается назад. Как бы, всё хорошо. Но между этими двумя моментами вызываются функции push_back и make_shared, каждая из которых может выбросить исключение. Я, в коде своей программы, могу отловить исключения и продолжить работу дальше. Но, вот, только библиотечный код при этом не раз’lock’чит mutex, и при попытке повторно его за’lock’чить всё повиснет. Для избегания таких вещей в стандартной библиотеке специально имеется lock_guard, который раз’lock’чит mutex при любом развитии событий.
Третья жесть — вы вообще прогоняли свой же тест?
Он не падает где-то на 33-35 строке?
В функцию с переменным числом аргументов передаёте сами объекты, а в самой функции вычитываете их адреса. Но передали-то объекты, а не их адреса. Естественно, всё падает.
В функцию с переменным числом аргументов можно передавать только POD-типы, а вы аж вектор туда запихиваете. И LineSpec не является POD-типом. Чтобы он им стал, требуется оттуда выкинуть всё, что мешает скомпилировать его в pure C. Вам хочется использовать значения по умолчанию, но это можно сделать и с POD-типом, применив вспомогательную функцию. Вот набросок на эту тему. Значение последнего параметра берётся по умолчанию.
Вот здесь рекомендуют вместо функции с переменным числом аргументов использовать variadic templates или initializer_list. Но для этого, конечно, нужно владеть «шаблонной магией» хотя бы на среднем уровне.
Набросок решения с использованием variadic templates — здесь (общее количество пар заранее неизвестно).
Набросок решения с использованием initializer_list — здесь (общее количество пар в данном случае будет заранее известно).
В целом, остальное, навскидку, жестью не является, но очень много особенностей построения кода говорят о непонимании множества вещей.
Для написания библиотек, кстати, требуется более высокая квалификация, чем для написания обычных программ, потому что требуется учитывать множество вариантов, как пользователи библиотеки могут использовать её.
Создание графиков в WinForms C#
Доброго времени суток! В данной статье мы рассмотрим, как можно создавать графики в WinForms C#. В качестве платформы примера нужно взять .Net Framework 4.8. Далее в ссылки проекта необходимо добавить ссылку на сборку System.Windows.Forms.DataVisualization. Для этого нужно в обозревателе решений нажать правой мыши на элемент меню Ссылки и далее Добавить ссылку. В открывшемся окне необходимо найти сборку и выделить ее галочкой. В панели элементов должен появиться новый элемент — Chart. Обратите внимание, что проект должен быть для версии .Net Framework 4.*. Теперь рассмотрим пример кода:
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
namespace ChartsWinForms
<
public partial class MainForm : Form
<
public MainForm()
<
InitializeComponent();
// Установим палитру
chart.Palette = ChartColorPalette.SeaGreen;
// Заголовок графика
chart.Titles.Add("Посетители");
// Добавляем последовательность
for (int i = 0; i < daysOfWeek.Length; i++)
<
Series series = chart.Series.Add(daysOfWeek[i]);
// Добавляем точку
series.Points.Add(numberOfVisitors[i]);
>
Таким образом, вот так просто можно создавать графики в WinForms C#.
Как построить график в Эксель: пошаговая инструкция
Таблица – не самый доступный и понятный для пользователей способ представления данных. Иногда информацию проще проанализировать, если она показана в виде графика. Тем более что программа Excel предоставляет множество способов составления диаграмм. Рассказываем, как составить график в Эксель по таблице и изменять его настройки.
Простой график для одной переменной
Проще всего разобраться, как построить график в Эксель по данным таблицы, состоящей всего из двух колонок. Для наглядного примера можно взять названия месяцев и объем полученной за это время прибыли. Ряд будет только один, а осей на графике — две. Строить диаграмму можно по следующей пошаговой инструкции:
- Выделить таблицу с данными.
- Перейти на вкладку «Вставка», где можно выбирать вариант диаграммы: например, простой график функции, круговой или точечный.
- Убедиться в том, что данные в таблице были автоматически распределены так, как это было запланировано. В данном случае ошибки нет: значения указаны по оси X, даты — по OY.
Если пользователь случайно ошибся при построении графика или хочет изменить информацию, он может поменять настройки, выделив область построения диаграммы и использовав контекстное меню. Попасть в него легко с помощью клика правой кнопкой мыши. Изменению подлежат тип графика, данные для его построения, форматы сетки и каждой оси.
Перейдя в контекстном меню к пункту «Выбрать данные», можно настроить, какая информация будет отображаться. Например, для указанного примера у пользователя есть возможность выделять данные только для конкретных месяцев. Для этого достаточно убирать галочки с ненужных дат или изменить формулу в графе «Диапазон данных для диаграммы».
Стоит отметить, что построение графика по представленным в табличной форме данным обеспечит автоматическую перестройку линии при изменении информации. Например, если в показатели прибыли были внесены корректировки на основании более точных сведений, диаграмма станет другой без дополнительных действий со стороны пользователя. Точно так же изменятся и все названия, если откорректировать их на графике.
Легенду с названием графика при использовании только одного изменяющегося показателя оставлять необязательно. В современных версиях Excel имя ряда данных не будет показано на диаграмме автоматически. В более старых пакетах MS Office легенду можно удалить вручную.
Чтобы оценивать информацию на графике было проще, стоит выделить линию, в виде которой представлен ряд, и в контекстном меню указать необходимость добавления подписей. Результатом станет появление значений прямо на диаграмме — с той же точностью, с которой они указаны в таблице.
На вкладке «Конструктор» можно поменять еще больше настроек — выбрать экспресс-макет и готовый шаблон, изменить цвета и добавить дополнительные элементы графика. В том числе — подписи к осям данных, названия которых в последних версиях MS Excel вводятся вручную.
Также читайте, как сделать кнопку в Excel, чтобы быстрее перейти у нужной таблице или графику.
График с несколькими переменными
Узнав, как в Эксель нарисовать график при наличии только одного столбца со значениями, стоит перейти к решению более сложной задачи — составлению диаграмм, на которых будет несколько рядов.
Если рассматривать тот же пример, вместе с прибылью могут быть представлены еще накладные расходы. Принцип создания будет включать такие шаги:
- Выделить таблицу с данными, захватив все колонки.
- На вкладке «Вставка» выбрать тип диаграммы.
- Проверить, соответствует ли автоматически построенный программой график нужным требованиям. Если нет — изменить настройки вручную.
Для графика с двумя и большим количеством рядов данных стоит оставить «легенду» с подписями. Она позволит разобраться, каким цветом, оттенком или типом линии отмечен нужный показатель. Однако название диаграммы в этом случае придется вносить вручную — или указать в настройках, в какой ячейке таблицы расположен нужный текст.
С помощью контекстного меню на состоящем из нескольких рядов графике можно менять различные настройки, характеристики осей и линий, добавлять подписи и менять шрифты. А при изменении информации в таблице это автоматически отразится и на диаграмме. Данные, которые вводились вручную, (например, название оси или графика) придется менять тем же способом.
Добавление второй оси
Иногда информация может быть представлена в таблице так, что поместить ее на одной общей диаграмме, на первый взгляд, невозможно. Если представить, что накладные расходы указаны не в рублях, а в долларах, график получится некорректным.
Можно построить две разных диаграммы для каждого ряда данных. Или перед тем, как сделать график в Экселе, пересчитать сумму по действующем курсу — но это будет не слишком правильно, если затраты определялись именно в валюте. Решение проблемы — добавить вторую ось со своими единицами измерения.
График функции в Excel: как построить?
В MS Office Excel можно построить график математической функции. Рассмотрим построение графиков на примерах.
Пример 1
Дана функция:
Нужно построить ее график на промежутке [-5;5] с шагом равным 1.
Создание таблицы
Создадим таблицу, первый столбец назовем переменная x (ячейка А1), второй — переменная y (ячейка В1). Для удобства в ячейку В1 запишем саму функцию, чтобы было понятно, какой график будем строить. Введем значения -5, -4 в ячейки А2 и А3 соответственно, выделим обе ячейки и скопируем вниз. Получим последовательность от -5 до 5 с шагом 1.
Вычисление значений функции
Нужно вычислить значения функции в данных точках. Для этого в ячейке В2 создадим формулу, соответствующую заданной функции, только вместо x будем вводить значение переменной х, находящееся в ячейке слева (-5).
Важно: для возведения в степень используется знак ^, который можно получить с помощью комбинации клавиш Shift+6 на английской раскладке клавиатуры. Обязательно между коэффициентами и переменной нужно ставить знак умножения * (Shift+8).
Ввод формулы завершаем нажатием клавиши Enter. Мы получим значение функции в точке x=-5. Скопируем полученную формулу вниз.
Мы получили последовательность значений функции в точках на промежутке [-5;5] с шагом 1.
Построение графика
Выделим диапазон значений переменной x и функции y. Перейдем на вкладку Вставка и в группе Диаграммы выберем Точечная (можно выбрать любую из точечных диаграмм, но лучше использовать вид с гладкими кривыми).
Мы получили график данной функции. Используя вкладки Конструктор, Макет, Формат, можно изменить параметры графика.
Пример 2
Даны функции:
и y=50x+2. Нужно построить графики этих функций в одной системе координат.
Создание таблицы и вычисление значений функций
Таблицу для первой функции мы уже построили, добавим третий столбец — значения функции y=50x+2 на том же промежутке [-5;5]. Заполняем значения этой функции. Для этого в ячейку C2 вводим формулу, соответствующую функции, только вместо x берем значение -5, т.е. ячейку А2. Копируем формулу вниз.
Мы получили таблицу значений переменной х и обеих функций в этих точках.
Построение графиков
Для построения графиков выделяем значения трёх столбцов, на вкладке Вставка в группе Диаграммы выбираем Точечная.
Мы получили графики функций в одной системе координат. Используя вкладки Конструктор, Макет, Формат, можно изменить параметры графиков.
Последний пример удобно использовать, если нужно найти точки пересечения функций с помощью графиков. При этом можно изменить значения переменной x, выбрать другой промежуток или взять другой шаг (меньше или больше, чем 1). При этом столбцы В и С менять не нужно, диаграмму тоже. Все изменения произойдут сразу же после ввода других значений переменной x. Такая таблица является динамической.
Кратко об авторе:
Шамарина Татьяна Николаевна — учитель физики, информатики и ИКТ, МКОУ "СОШ", с. Саволенка Юхновского района Калужской области. Автор и преподаватель дистанционных курсов по основам компьютерной грамотности, офисным программам. Автор статей, видеоуроков и разработок.
Спасибо за Вашу оценку. Если хотите, чтобы Ваше имя
стало известно автору, войдите на сайт как пользователь
и нажмите Спасибо еще раз. Ваше имя появится на этой стрнице.
Понравился материал?
Хотите прочитать позже?
Сохраните на своей стене и
поделитесь с друзьями
Вы можете разместить на своём сайте анонс статьи со ссылкой на её полный текст
Ошибка в тексте? Мы очень сожалеем,
что допустили ее. Пожалуйста, выделите ее
и нажмите на клавиатуре CTRL + ENTER.
Кстати, такая возможность есть
на всех страницах нашего сайта
0 Спам
2 vladislav190989 • 21:44, 03.12.2022
0 Спам
1 vladislav190989 • 21:42, 03.12.2022
Отзывы
Егорова Елена 5.0
Наговицина Ольга Витальевна 5.0
Чазова Александра 5.0
Лосеева Татьяна Борисовна 5.0
Язенина Ольга Анатольевна 4.0
Арапханова Ашат 5.0
Дамбаа Айсуу 5.0
2007-2023 «Педагогическое сообщество Екатерины Пашковой — PEDSOVET.SU».
12+ Свидетельство о регистрации СМИ: Эл №ФС77-41726 от 20.08.2010 г. Выдано Федеральной службой по надзору в сфере связи, информационных технологий и массовых коммуникаций.
Адрес редакции: 603111, г. Нижний Новгород, ул. Раевского 15-45
Адрес учредителя: 603111, г. Нижний Новгород, ул. Раевского 15-45
Учредитель, главный редактор: Пашкова Екатерина Ивановна
Контакты: +7-920-0-777-397, info@pedsovet.su
Домен: https://pedsovet.su/
Копирование материалов сайта строго запрещено, регулярно отслеживается и преследуется по закону.
Отправляя материал на сайт, автор безвозмездно, без требования авторского вознаграждения, передает редакции права на использование материалов в коммерческих или некоммерческих целях, в частности, право на воспроизведение, публичный показ, перевод и переработку произведения, доведение до всеобщего сведения — в соотв. с ГК РФ. (ст. 1270 и др.). См. также Правила публикации конкретного типа материала. Мнение редакции может не совпадать с точкой зрения авторов.
Для подтверждения подлинности выданных сайтом документов сделайте запрос в редакцию.
О работе с сайтом
Мы используем cookie.
Публикуя материалы на сайте (комментарии, статьи, разработки и др.), пользователи берут на себя всю ответственность за содержание материалов и разрешение любых спорных вопросов с третьми лицами.
При этом редакция сайта готова оказывать всяческую поддержку как в публикации, так и других вопросах.
Если вы обнаружили, что на нашем сайте незаконно используются материалы, сообщите администратору — материалы будут удалены.