Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
2 / 2 / 1
Регистрация: 18.03.2018
Сообщений: 145

Отрисовка графика функции

26.11.2020, 17:11. Показов 2705. Ответов 19

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Не могу сделать задание, уже вроде бы всё разобрал, но не могу понять в чём ошибка, может кто подсказать?
Файл csv лежит в корне и заполнен

Язык знаю очень поверхностно.




Название: Вариант.PNG
Просмотров: 109

Размер: 3.5 Кб

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import matplotlib.pyplot
import numpy
import csv
 
data = []
with open('test.csv')as csvFile:
    spamReader = csv.reader(csvFile)
    for row in spamReader:
        data = " ".join(row).split()
 
data = (int(elem) for elem in data)
 
x = numpy.arange(-10.0, 10.0, 0.01)
y = numpy.tan(data[0]*x**2 + data[1]*x + data[3])
 
matplotlib.pyplot.xlabel(r'Ось OX', color = 'r')
matplotlib.pyplot.ylabel(r'Ось OY', color = 'b')
matplotlib.pyplot.title(r'$y = tg (ax^2 + bx + c)' , color = 'g')
matplotlib.pyplot.plot(x, y, 'r')
 
matplotlib.pyplot.show()
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.11.2020, 17:11
Ответы с готовыми решениями:

Отрисовка графика функции
Создания графика функции на СИ y=2sin(x){e}^{x/\alpha } Что то не работает помогите найти ошибку #include <graphics.h> #include...

Отрисовка графика функции многочлена
Здравствуйте, задание звучит так: отрисовка произвольного многочлена с произвольными степенями (возможно, отрицательными и...

Отрисовка графика функции: как преобразовать координаты?
Рисую график функции sin x - 2y = 1 Сначала отрисовываю координатные оси и координатную сетку. За единицу на осях координат принимаю 20...

19
2 / 2 / 1
Регистрация: 18.03.2018
Сообщений: 145
27.11.2020, 12:37  [ТС]
Переделал немного, ошибка получается уже другого рода.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# y = tg (ax^2 + bx + c)
import matplotlib.pyplot
import numpy
import csv
 
data = []
with open("test.tsv") as tsvfile:
    tsvreader = csv.reader(tsvfile, delimiter="\t")
    for row in tsvreader:
        data = " ".join([str(i) for i in row])
 
x = numpy.arange(-10.0, 10.0, 0.01)
y = numpy.tan(data[0]*x**2 + data[1]*x + data[3])
 
matplotlib.pyplot.xlabel(r'Ось OX', color = 'r')
matplotlib.pyplot.ylabel(r'Ось OY', color = 'b')
matplotlib.pyplot.title(r'$y = tg (ax^2 + bx + c)' , color = 'g')
matplotlib.pyplot.plot(x, y, 'r')
 
matplotlib.pyplot.show()
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
27.11.2020, 13:02
Цитата Сообщение от LSTSnaiper Посмотреть сообщение
str(i)
а зачем ты переводишь в строку, а не в число?

Добавлено через 27 секунд
Цитата Сообщение от LSTSnaiper Посмотреть сообщение
" ".join
а это зачем?
0
2 / 2 / 1
Регистрация: 18.03.2018
Сообщений: 145
27.11.2020, 14:18  [ТС]
Цитата Сообщение от DmFat Посмотреть сообщение
а зачем ты переводишь в строку, а не в число?
потому что я не знаю вообще конструкции языка и нам его никто не объяснял, дали в короткие сроки сделать задание и вот пытаюсь хоть что-то понять

.join([str(i) for i in row]) - эта конструкция была на одном из сайтов и была подписана как приведение к int.

Зная с++ не на уровне про, я не понял почему str(i) и списал это на "особенности" питона.


Изначальный вариант я подсмотрел у другого потока и он работал.
Цитата Сообщение от LSTSnaiper Посмотреть сообщение
data = []
with open('test.csv')as csvFile:
    spamReader = csv.reader(csvFile)
    for row in spamReader:
        data = " ".join(row).split()
data = (int(elem) for elem in data)
Если напишите как в массив передать считанные значения, я буду благодарен.
Миниатюры
Отрисовка графика функции  
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
27.11.2020, 14:55
LSTSnaiper,

Python
1
2
3
4
5
6
7
8
9
10
11
import csv
 
# table.tsv
#   1;2;3
#   4;5;6
 
with open("table.tsv") as tsvfile:
    tsvreader = csv.reader(tsvfile, delimiter=";")
    data =[list(map(int, row)) for row in tsvreader]
 
print(data)  # [[1, 2, 3], [4, 5, 6]]
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
27.11.2020, 14:58
Вы бы ошибки текстом постили.
По третьей - ожидается строка, пршёл int. По второй - попытка умножить массив numpy, т. е. числа, на символ. Внимательнее с типами.
0
2 / 2 / 1
Регистрация: 18.03.2018
Сообщений: 145
27.11.2020, 15:07  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
Вы бы ошибки текстом постили.
Это уже дело вкуса. Большинству скрины информативнее.

Цитата Сообщение от dondublon Посмотреть сообщение
попытка умножить массив numpy, т. е. числа, на символ
У меня же x вроде как не символ, или я как-то не так понимаю что на что умножается?
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
27.11.2020, 15:10
Цитата Сообщение от LSTSnaiper Посмотреть сообщение
Это уже дело вкуса. Большинству скрины информативнее.
Нет, это не дело вкуса. Во-первых, это неудобно - надо кликать. Во-вторых, картинки не поддаются поиску. В-третьих, как следствие из двух первых причин, есть правило форума - задачи надо постить в виде текста. Тут не совсем задачи, но подобно.
Цитата Сообщение от LSTSnaiper Посмотреть сообщение
У меня же x вроде как не символ, или я как-то не так понимаю что на что умножается?
х - не символ, а вот data[0] - очень даже.
0
2 / 2 / 1
Регистрация: 18.03.2018
Сообщений: 145
27.11.2020, 15:10  [ТС]
Цитата Сообщение от DmFat Посмотреть сообщение
import csv
# table.tsv
#   1;2;3
#   4;5;6
with open("table.tsv") as tsvfile:
    tsvreader = csv.reader(tsvfile, delimiter=";")
    data =[list(map(int, row)) for row in tsvreader]
print(data)  # [[1, 2, 3], [4, 5, 6]]
Всё отлично, но мне печатать их не нужно, нужно передавать в мою формулу
Python
1
y = numpy.tan(data[0]*x**2 + data[1]*x + data[3])
При таком коде вытекает другая ошибка

Python
1
2
3
data = []
with open("test.tsv") as tsvfile:
    tsvreader = csv.reader(tsvfile, delimiter="\t")
Python
1
 operands could not be broadcast together with shapes (3,) (2000,)
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
27.11.2020, 15:11
Лучший ответ Сообщение было отмечено LSTSnaiper как решение

Решение

LSTSnaiper, эх, все надо делать самому, держи, старался - заслужил:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import csv
import numpy
import matplotlib.pyplot
 
 
with open("table.tsv") as tsvfile:
    tsvreader = csv.reader(tsvfile, delimiter=";")
    data =[list(map(float, row)) for row in tsvreader]
 
x = numpy.arange(-10.0, 10.1, 0.01)
for a, b, c in data:
    y = numpy.tan(a*x**2 + b*x + c)
    matplotlib.pyplot.plot(x, y, label=f'a = {a}, b = {b}, c = {c}')
 
matplotlib.pyplot.xlabel(r'Ось OX', color = 'r')
matplotlib.pyplot.ylabel(r'Ось OY', color = 'b')
matplotlib.pyplot.title(r'$y = tg (ax^2 + bx + c)' , color = 'g')
matplotlib.pyplot.legend()
matplotlib.pyplot.show()
1
2 / 2 / 1
Регистрация: 18.03.2018
Сообщений: 145
27.11.2020, 15:14  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
х - не символ, а вот data[0] - очень даже.
Я понимаю что считываемые символы из файла считаются строкой, и что их нужно преобразовать к int что бы в итоге умножать число лежащее по адресу data[0] .
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
27.11.2020, 15:15
Цитата Сообщение от LSTSnaiper Посмотреть сообщение
Я понимаю что считываемые символы из файла считаются строкой, и что их нужно преобразовать к int что бы в итоге умножать число лежащее по адресу data[0] .
Ну, уже неплохо.
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
27.11.2020, 15:17
LSTSnaiper, В коде выше ты можешь пихать таблицу с несколькими строками данных и получить несколько различных графиков.

Добавлено через 23 секунды

Не по теме:

dondublon, да видно что он понимает, просто питон не знает, грех не помочь.

0
2 / 2 / 1
Регистрация: 18.03.2018
Сообщений: 145
27.11.2020, 15:18  [ТС]
Цитата Сообщение от DmFat Посмотреть сообщение
эх, все надо делать самому, держи, старался - заслужил:
Извини, я бы и сам, может, разобрался, да нет времени на это.
Дали с++ даже до конца не разобрав его дают ещё 3 языка сверху и в голове образуется каша.
В итоге ни один , ни второй, ни 3 язык ты по факту не знаешь на должном уровне.
Не знаю чем думают преподы...
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
27.11.2020, 15:20
LSTSnaiper, да нормально, главное что ты понимаешь, а не очередной халявщик. А про учебу, это да. Сам так же учусь.)
0
2 / 2 / 1
Регистрация: 18.03.2018
Сообщений: 145
01.12.2020, 11:26  [ТС]
Господа, можно ещё немного помощи в вопросе.
Оказалось что у меня вообще другая функция....
Название: Безымянный.png
Просмотров: 62

Размер: 3.2 Кб
Правда я не совсем понимаю почему первый логарифм без аргумента. Может ошибка, а может я чего-то не знаю...
Приписал руками просто 25 что бы вообще хоть что-то попробовать, но столкнулся с шибкой.

Code
1
12 only size-1 arrays can be converted to Python scalars
Я так понимаю функция math.log() не может работать с диапазоном значений x (то есть с массивом данных).
Не понимаю как исправить это, есть идеи у кого-то? Может задание вообще не верное...


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import matplotlib.pyplot
import numpy
import math
import csv
 
with open("test.tsv") as tsvfile: # безопасное открытие файла (выполнится в любом случае и закроется файл)
    tsvreader = csv.reader(tsvfile, delimiter="\t")
    data =[list(map(int, row)) for row in tsvreader]
 
x = numpy.arange(-10.0, 10.1, 0.01) # задаются параметры интервала с шагом
for a, b, c, d in data:
    y = math.log(25,a)*math.log(c*x+d,b)
    matplotlib.pyplot.plot(x, y, label = f'a = {a}, b = {b}, c = {c}, d = {d}') # функция создания графика
 
matplotlib.pyplot.xlabel(r'Ось OX',fontsize = '14' ,color = 'r') # устанавливает подпись оси х
matplotlib.pyplot.ylabel(r'Ось OY',fontsize = '14' , color = 'b') # устанавливает подпись оси у
matplotlib.pyplot.title(r'$y = tg (ax^2 + bx + c)$' ,fontsize = '14' , color = 'g')
matplotlib.pyplot.legend() # добавление легенды
matplotlib.pyplot.show() # отображение окна с графиком
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
01.12.2020, 12:03
LSTSnaiper, numpy.log
0
2 / 2 / 1
Регистрация: 18.03.2018
Сообщений: 145
01.12.2020, 12:32  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
numpy.log
Пробовал я с ним, не могу разобраться что за а out array, там же получается 2 аргумент не base.
Я попробовал подставить туда data , но, это не то что нужно как я понимаю... Сложно разобраться без детального знания языка ...
Если даже и создать 2 массив и в него что будет записываться, как указать какое основание будет у этого numpy.log() пока что на просторах интернета ничего нормально объясняющего не нашёл.

Добавлено через 20 минут
Сделал так, нашёл на одном сайте инфу как задать пользовательское основание.
Вроде заработало, но это не точно что я всё правильно по заданию сделал, задание всё равно, как мне кажется кривое ..
Python
1
y = numpy.log(25)/numpy.log(a)*numpy.log(c*x+d)/numpy.log(b)
0
5517 / 2870 / 571
Регистрация: 07.11.2019
Сообщений: 4,761
01.12.2020, 13:11
LSTSnaiper, Итоговая формула в таком виде неправильна. Лучше расставьте скобки.
0
2 / 2 / 1
Регистрация: 18.03.2018
Сообщений: 145
01.12.2020, 13:31  [ТС]
Цитата Сообщение от u235 Посмотреть сообщение
Итоговая формула в таком виде неправильна. Лучше расставьте скобки.
Я подправил формулу в соответствии с вариантом задания, так, наверное, будет правильнее.
Python
1
y = numpy.log(numpy.log(c*x+d)/numpy.log(b))/numpy.log(a)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.12.2020, 13:31
Помогаю со студенческими работами здесь

Отрисовка графика
Доброго времени суток! Никак не могу нарисовать график функции. До этого рисовал (в моём понимании) более сложные графики,...

Отрисовка графика
Помогите заполнить массив точек в соответствие с формулой (2 * x - 3 * Math.Log10(x) - 3) и сохранением корректного отображение с учетом...

Отрисовка графика
Всем привет. Помогите пожалуйста разобраться. Имеется функция:s(t)=cos(2*Pi*13*t+(Pi/6)). Нашел функции для построения(на картинке...

Отрисовка графика
Если взять много данных для отрисовки свечного графика, к примеру из файла csv, то чувствую, что это затратный способ. Если это так, то в...

Графика, отрисовка диода
есть функция рисует на вертикальной линии диод void VD(pos q,String S,pos p) { if(q) { t->Pen->Width=1; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru