python - 如何扩展 ln(x) 图的非对数 x 轴
问题描述
我想计算几个函数,包括从ln(x)
1 到 10 的间隔。但是,我想在. 到目前为止,我无法根据需要修改刻度,标签遵循我的大小而不是自身的值:x
x[-1, 10]
ln(x)
x
axiss = np.linspace(-1,10,12)
x = np.linspace(-1, 10, 1002)
s = int(np.where(x == 1)[0])
fig, ax = plt.subplots()
ax.plot(np.log(x[s:-1]), label='ln(x)')
ax.plot(1/x[s:-1], label='1/x')
ax.plot(-1/(x[s:-1]**2), label='-1/x2')
ax.plot(2/(x[s:-1]**3), label='2/x3')
ax.legend()
ax.set_xlim(-100, 1000)
ax.set_xticklabels(axiss)
如何为我的 x 轴定义一个范围,但只计算其中一部分的函数?
我试过:
ax.plot(x, np.log(x[s:-1]), label='ln(x)')
但当然我有一个长度问题。
谢谢 !
ps:是的,我已经在网上搜索了方法,问这里是我最后的手段
解决方案
您可以明确地将 x 和 y 列表都提供给 matplotlib。这也避免了手动设置 xtick 标签的需要。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-1, 10, 1001) # don't divide by 0.0
x_for_ln = np.linspace(0.001, 10, 1001)
fig, ax = plt.subplots()
ax.plot(x_for_ln, np.log(x_for_ln), label='ln(x)')
ax.plot(x, 1/x, label='1/x')
ax.plot(x, -1/(x**2), label='-1/x2')
ax.plot(x, 2/(x**3), label='2/x3')
ax.legend()
ax.set_ylim(-10, 10)
推荐阅读
- android - RecyclerView 项目仅在添加时未对齐
- spring - 统一的二维弹簧效果
- android - 信标监控在 nativescript vue 中不起作用
- python - 导入的类看不到 Pytest 环境装置
- r - 我正在使用 rvest 抓取黄页,并在运行 submit_form() 时收到 403 Forbidden 消息
- python - 是否可以在线程中启动新进程?
- c# - Autofac:来自单个接口和不同制造商的多个实现的解析
- r - 如何防止或更改 R 基本默认编辑器复制带有彩色空白的文本?
- apache-flink - 与 Apache Flink 同步响应
- php - 使用 Access-Control-Allow-Origin 防止对 PHP 文件的 ajax 请求