我需要使用python = y = m * x + c创建不使用matplotlib.pyplot
的折线图。图的格式应如下所示:
如何创建这样的自定义图形?到目前为止,我已经尝试了以下方法:
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 ()
答案 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的输出
m = 0.4的输出
由于我是在jupyter笔记本中执行此操作的,因此它不是等宽字体,因此m = 1并不是理想的45度斜率,但是如果您在终端或任何等宽输出中尝试使用它,它应该可以按预期工作。