有没有简单的方法在matplotlib中绘制锯齿形或波浪线?
我知道不同的线条样式(http://matplotlib.org/examples/lines_bars_and_markers/line_styles_reference.html),我当然知道它不是绘图
plt.figure(); plt.plot(n.linspace(0.7,1.42,100),[0.7]*100)
Run Code Online (Sandbox Code Playgroud)
我可以策划
plt.figure(); plt.plot(n.linspace(0.7,1.42,100),[0.69,0.71]*50)
Run Code Online (Sandbox Code Playgroud)
对于一个曲折线,但我想知道是否有一个更直接的方式?
是的,但它带来了一点影响。最简单的方法是在 matplotlib 中使用xkcd模式。
import numpy as np
import matplotlib.pyplot as plt
plt.xkcd()
plt.figure()
plt.plot(np.linspace(0.7,1.42,100),[0.7]*100)
plt.show()
Run Code Online (Sandbox Code Playgroud)
如果您查看用于实现此目的的代码,您会发现该xkcd函数对rcParams字典进行了一些更改。最值得注意的是入口rcParams['path.sketch'] = (scale, length, randomness),这是一种能够模拟手绘外观的路径效果。xkcd 样式使用的默认参数是:
# explanation from the docstring of the xkcd function
scale = 1 # amplitude of the wiggle
length = 100 # length of the wiggle along the line
randomness = 2 # scale factor for shrinking and expanding the length
Run Code Online (Sandbox Code Playgroud)
rcParams如果从matplotlib包中导入字典,则可以更改字典中的条目。在以下示例中,我将randomness值从2增加到100:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['path.sketch'] = (1, 100, 100)
plt.plot(np.linspace(0.7,1.42,100),[0.7]*100)
plt.show()
Run Code Online (Sandbox Code Playgroud)
这将导致以下情节:
如您所见,更多的抖动和用于刻度线的字体仍然“正常”。但是,该样式也用于绘制轴,到目前为止我还没有找到解决方法。两种解决方法可能是:
选项 1 可以这样实现:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['path.sketch'] = (10, 10, 100)
fig = plt.plot(np.linspace(0.7,1.42,100),[0.7]*100)
for pos, spine in fig[0].axes.spines.items():
spine.set_visible(False)
plt.show()
Run Code Online (Sandbox Code Playgroud)
其中,在我看来看起来很不错。无论如何,地块周围的边界被高估了。
要获得均匀波浪线,请将随机性参数设置为 1 并为幅度和长度选择较小的值:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['path.sketch'] = (3, 10, 1)
fig = plt.plot(np.linspace(0.7,1.42,100),[0.7]*100)
for pos, spine in fig[0].axes.spines.items():
spine.set_visible(False)
plt.show()
Run Code Online (Sandbox Code Playgroud)
rcParams['path.sketch'] = (100, 1, 100)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1793 次 |
| 最近记录: |