python画y x_如何将y=1/x绘制为单个图形

本文探讨了如何使用Python的matplotlib库绘制函数y=1/x,特别是如何处理x=0的情况,以避免在正负无穷大处相连。通过在x轴上设置不同的区间并忽略除以零的错误,实现了目标效果。最后提供了一个简洁的解决方案,能够适用于其他类似函数。
摘要由CSDN通过智能技术生成

有没有一种简单的方法来绘制一个函数,这个函数在正反两个方向上趋于无穷大,而没有正反两端的连接?

例如,使用此代码绘制y=1/x将得到结果:import numpy as np

import matplotlib.pyplot as plt

def f(x):

return 1/x

fx_name = r'$f(x)=\frac{1}{x}$'

x=np.setdiff1d(np.linspace(-10,10,100),[0]) #to remove the zero

y=f(x)

plt.plot(x, y, label=fx_name)

plt.legend(loc='upper left')

plt.show()

但是我想要这个输出,我通过绘制两个独立的域来实现:import numpy as np

import matplotlib.pyplot as plt

def f(x):

return 1/x

fx_name = r'$f(x)=\frac{1}{x}$'

xfn=np.setdiff1d(np.linspace(-10,0,100),[0])

xfp=np.setdiff1d(np.linspace(0,10,100),[0])

yfn=f(xfn)

yfp=f(xfp)

yf = plt.plot(xfn, yfn, label=fx_name)

plt.plot(xfp, yfp, color=yf[0].get_color())

plt.legend(loc='upper left')

plt.show()

有捷径吗?

非常感谢。

解决方案

在域数组中包含零,并抑制除以零。这将强制返回的同域数组中的一个元素作为“inf”,并且不绘制“inf”。import numpy as np

import matplotlib.pyplot as plt

def f(x):

with np.errstate(divide='ignore', invalid='ignore'):

return 1/x

fx_name = r'$f(x)=\frac{1}{x}$'

x=np.linspace(-10,10,101)

y=f(x)

plt.plot(x, y, label=fx_name)

plt.legend(loc='upper left')

plt.show()

我更喜欢这种方法,因为它避免了对数组的手动操作,并且可以很容易地重用到共享同一域的其他函数(例如y=1/(x+2))。谢谢大家的贡献。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
tkinter是一个常用的Python GUI编程库,可以用来创建各种图形界面应用程序。在tkinter中,我们可以使用不同的方法来绘制图形。 要绘制一个多边形,可以使用create_polygon方法。该方法需要传入至少三个点的坐标,然后可以绘制一个多边形。例如,下面的代码使用create_polygon方法绘制了一个三角形: ```python from tkinter import * canvas_width = 200 canvas_height = 200 python_green = "#476042" master = Tk() w = Canvas(master, width=canvas_width, height=canvas_height) w.pack() points = [0, 0, canvas_width, canvas_height/2, 0, canvas_height] w.create_polygon(points, outline=python_green, fill='yellow', width=3) mainloop() ``` 如果想要在canvas上手动绘图,但是canvas并没有提供绘制单个点的方法,我们可以通过绘制小的椭圆来解决这个问题。下面的代码展示了如何使用create_oval方法绘制一个点: ```python from tkinter import * canvas_width = 500 canvas_height = 150 def paint(event): python_green = "#476042" x1, y1 = (event.x - 1), (event.y - 1) x2, y2 = (event.x + 1), (event.y + 1) w.create_oval(x1, y1, x2, y2, fill=python_green) master = Tk() master.title("Painting using Ovals") w = Canvas(master, width=canvas_width, height=canvas_height) w.pack(expand=YES, fill=BOTH) w.bind("<B1-Motion>", paint) message = Label(master, text="Press and Drag the mouse to draw") message.pack(side=BOTTOM) mainloop() ``` 另外,如果想要在tkinter中使用matplotlib绘制图形,可以结合使用tkinter和matplotlib库。具体的操作技巧可以参考相关的教程和示例代码。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [[Tkinter 教程08] Canvas 图形绘制](https://blog.csdn.net/liuxu0703/article/details/60602773)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Python实现在tkinter中使用matplotlib绘制图形的方法示例](https://download.csdn.net/download/weixin_38675746/12870857)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值