Создание линейного графа в Python - PullRequest
0 голосов
/ 16 января 2019

Мне нужно создать линейный график, используя python, без использования matplotlib.pyplot, используя формулу y = m * x + c. Формат графика должен выглядеть следующим образом:

desired output

Как мне создать собственный график, подобный этому? До сих пор я пробовал следующее:

r=int(input("enter number rows "))
c=int(input("enter number of columb"))
i=0
j=c
for row in range(r):
    for col in range(c):
        if col==0:
        print ("|",end="")
    elif row==(r-1):
        print ("--",end="")
    elif row == i or col == j:
        print ("*",end="")
        i=i+2
        j=j-1
    else:
        print(end=" ")

print ()

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Вот решение. m - ваш уклон, а c - ваш перехват. Хитрость заключается в том, чтобы просто проверить расстояние от линии до точки x и y. Если расстояние достаточно близко, вы можете нарисовать свой символ (*). Чем больше пороговое значение для расстояния, тем толще окажется линия.

import math

def intercept(px, py, m, c):
    # Find distance between point (px, py) and line (y=mx+c)
    dist = abs(m*px - py + c) / math.sqrt( m*m + 1)
    if dist <= 0.5:
        return True
    else:
        return False

rows=20
cols=20
m = 0.25
c = 0
for row in range(rows):
    y = rows - row - 1
    for col in range(cols):
        x = col
        if intercept(x, y, m, c):
            print("*", end="")
        else:
            print(" ", end="")
    print("")

Выход для m = 1

enter image description here

Выход для m = 0,4

enter image description here

Так как я делал это в ноутбуке jupyter, он не был моноширинным шрифтом, следовательно, m = 1 не идеальный наклон 45 градусов, но если вы попробуете это в своем терминале или любом моноширинном выходе, он должен работать так, как ожидалось.

0 голосов
/ 16 января 2019

Кроме matplotlib, есть несколько других библиотек, которые выполняют ту же работу. Как Plotly, ggplot, seaborn и т. Д.

https://plot.ly/python/line-charts/ https://seaborn.pydata.org/generated/seaborn.lineplot.html

ggplot для построения линейного уравнения: https://yhat.github.io/ggpy/notebook.html?page=build/docs/examples/Plotting%20a%20Line%20Equation.html

...