Python 使用不同颜色绘制多个函数,包括导数
我的Python程序有一个非常简单的问题——它根本没有完成。现在它正在做我想要的一切,但不是我想要的方式 我一直在努力改变三件事:Python 使用不同颜色绘制多个函数,包括导数,python,numpy,matplotlib,sympy,Python,Numpy,Matplotlib,Sympy,我的Python程序有一个非常简单的问题——它根本没有完成。现在它正在做我想要的一切,但不是我想要的方式 我一直在努力改变三件事: 所有函数都使用相同的颜色绘制,我希望程序在向绘图中添加新函数时自动切换到新颜色(它将超过2个,都在同一个绘图上) f(x)的范围是140。我怎样才能减少呢?也许是20/40 (最重要的)我的代码不是很有效f1和衍生工具根本不相关。我在f1中声明了函数的模型,但我必须在导数中重新设置所有内容。每次我尝试执行其他操作时,main函数都会出现一些问题。我最终会添加更多的
衍生工具
根本不相关。我在f1
中声明了函数的模型,但我必须在导数中重新设置所有内容。每次我尝试执行其他操作时,main
函数都会出现一些问题。我最终会添加更多的功能,比如集成等等,如果每次我想用f1
做一些事情时都从头开始声明,那么程序就会失去它的用途李>
我应该在f1中使用x=Symbol('x')
import numpy as np
import matplotlib.pyplot as plt
from sympy import *
x = Symbol('x')
def f1(a, b, c, d):
y = a*x**3 + b*x**2 + x*c + d
return y
###yprime = y.diff(x)
###return yprime
def derivative(a, b, c, d):
y = a*x**3 + b*x**2 + x*c + d
yprime = y.diff(x)
return yprime
def factorail(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
###colors = iter(cm.rainbow(np.linspace(0, 1, len(ys))))
###for y in ys:
###plt.scatter(x, y, color=next(colors))
def main():
###colors = itertools.cycle(["r", "b", "g"])
y = f1(0,1,2,1)
yp = derivative(0,1,2,1)
print(y)
plot(y, yp)
plot(yp)
plt.show()
if __name__ == '__main__':
main()
我使用下面的函数以一种通用的方式获取彼此“远”的颜色。2396745是相当随意的,它定义了颜色之间的距离。它似乎给了我很好的效果
def cmap_ints(i):
return "#"+hex(((int(i)+1)*2396745)%(256**3))[2:].rjust(6,"0")
用法:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,1,100)
y1 = 3*x + 4
y2 = 2*x - 5
plt.plot(x,y1,c=cmap_ints(1))
plt.plot(x,y2,c=cmap_ints(2))
垂直窗口由ylim
选项设置。我还建议对x
使用一些明确的限制,默认值-10到10并不一定最适合您。我建议你阅读
颜色由line\u Color
选项设置。不同的颜色需要调用不同的绘图
,但这些颜色可以组合使用。例如:
p = plot(y, (x, -5, 5), ylim=(-20, 20), line_color='b', show=False)
p.extend(plot(yp, (x, -5, 5), ylim=(-20, 20), line_color='r', show=False))
p.show()
导致
功能重用很容易:
def derivative(a, b, c, d):
y = f1(a, b, c, d)
yprime = y.diff(x)
return yprime
旁白:如果我们尝试line\u color=['b','r']
,如plot(y,yp,ylim=(-20,20),line\u color=['b','r'])
,会发生什么?有趣的事情发生了:
我已经回答了您的第一个问题。一般来说,stackoverflow问题应该问一件事,这样未来的人们才能有效地找到他们想要的问题和答案。我强烈建议你提出3个问题,这能回答你的问题吗?OP没有使用Matplotlib的plot函数。@user6655984这与此无关。cmap_ints
函数产生的颜色是简单的RGB值。基本上任何图形系统都可以使用这个。回答得很好,非常感谢!它工作得很好。出于好奇:用matplotlib和sympy作图有什么区别,还是它们就像“同一枚硬币的两面”?最后一件事,你是怎么让电网运转起来的?我尝试在plot()上使用adaptive=False,就像在sympy的页面上一样,但没有成功。我需要使用plot_implicit吗?Symphy最终将调用一个后端绘图库,它很可能是matplotlib。但是,当通过Symphy进行绘图时,您不会涉及诸如“要使用多少采样点,np.linspace(a,b,n?
”之类的问题。sympy.plot
的选项与matplotlib提供的选项大不相同。至于网格和灰色背景,它们是由于我的环境,这是一个笔记本。