在python中创建折线图

时间:2019-01-16 16:51:32

标签: python loops graph line

我需要使用python = y = m * x + c创建不使用matplotlib.pyplot的折线图。图的格式应如下所示:

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 :(得分:1)

除了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

答案 1 :(得分:1)

这是解决方案。 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度斜率,但是如果您在终端或任何等宽输出中尝试使用它,它应该可以按预期工作。