小编For*_*t17的帖子

指定matplotlib图层的顺序

假设我运行以下脚本:

import matplotlib.pyplot as plt

lineWidth = 20
plt.figure()
plt.plot([0,0],[-1,1], lw=lineWidth, c='b')
plt.plot([-1,1],[-1,1], lw=lineWidth, c='r')
plt.plot([-1,1],[1,-1], lw=lineWidth, c='g')
plt.show()
Run Code Online (Sandbox Code Playgroud)

这产生以下结果:

在此输入图像描述

如何指定图层的从上到下的顺序,而不是让我选择Python?

python plot matplotlib layer

31
推荐指数
3
解决办法
4万
查看次数

matplotlib 3d轴刻度,标签和LaTeX

我正在运行示例脚本,并进行了以下修改:

import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt

mpl.rcParams['legend.fontsize'] = 10

fig = plt.figure()
ax = fig.gca(projection='3d')
theta = np.linspace(-4 * np.pi, 4 * np.pi, 100)
z = np.linspace(-2, 2, 100)
r = z**2 + 1
x = r * np.sin(theta)
y = r * np.cos(theta)
ax.plot(x, y, z, label='parametric curve')
ax.legend()

ax.set_xlabel('$X$', fontsize=20, rotation=150)
ax.set_ylabel('$Y$')
ax.set_zlabel(r'$\gamma$', fontsize=30, rotation=60)
ax.yaxis._axinfo['label']['space_factor'] = 3.0

plt.show()
Run Code Online (Sandbox Code Playgroud)
  1. 如何将轴刻度调整为我选择的轴刻度?即,我如何让z轴仅标记为2,0和-2,以及我想要的字体大小?我知道如何在2D而不是3D中执行此操作.

  2. 上面的脚本产生以下内容:

在此输入图像描述

为什么x轴标签失真,我想用这个脚本做,但不是z轴标签(gamma)?这根本不符合逻辑.我需要在希腊字母中标注这个轴.我该如何解决?

python 3d latex matplotlib mplot3d

16
推荐指数
2
解决办法
3万
查看次数

matplotlib 箭头和纵横比

如果我运行这个脚本:

import matplotlib.pyplot as plt
import pylab as plab

plt.figure()
plt.plot([0,2], [2,0], color='c', lw=0.5)
plt.plot([1,2], [2,1], color='k', lw=0.5)
plt.arrow(1,1,0.5,0.5, head_width=0.1, width=0.01, head_length=0.1, color='r')
plt.arrow(1.25,0.75,0.5,0.5, head_width=0.1, width=0.01, head_length=0.1, color='g')

plab.axes().set_aspect(0.5)

plt.show()
Run Code Online (Sandbox Code Playgroud)

我明白了: 在此处输入图片说明 请注意,箭头的背面与从 (1,2) 延伸到 (2,1) 的黑线齐平。这是有道理的,但我希望箭头的背面在视觉上垂直于尾部而不改变纵横比。我该怎么做呢?

python plot matplotlib

5
推荐指数
1
解决办法
1033
查看次数

Python 无法从某些 scipy.signal 方法导入名称

import numpy as np
from scipy.integrate import odeint
from scipy.signal import find_peaks
Run Code Online (Sandbox Code Playgroud)

第三行触发以下错误:

ImportError: cannot import name find_peaks
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?我没有对我所知道的 scipy 包进行任何更改。另外值得注意的是,仅导入 scipy.signal 不会产生错误。

python scipy

4
推荐指数
1
解决办法
7684
查看次数

子图之间的箭头

我决定尝试一下这个示例代码。我能够弄清楚如何在两个子图之间绘制一条直线,即使该线位于其中一个子图的边界之外。

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

fig = plt.figure(figsize=(10, 5))
ax1 = fig.add_subplot(121)
ax2 = fig.add_subplot(122)
axs = [ax1, ax2]

# Fixing random state for reproducibility
np.random.seed(19680801)

# generate some random test data
all_data = [np.random.normal(0, std, 100) for std in range(6, 10)]

# plot violin plot
axs[0].violinplot(all_data,
                  showmeans=False,
                  showmedians=True)
axs[0].set_title('Violin plot')

# plot box plot
axs[1].boxplot(all_data)
axs[1].set_title('Box plot')

# adding horizontal grid lines
for ax in axs:
    ax.yaxis.grid(True)
    ax.set_xticks([y + …
Run Code Online (Sandbox Code Playgroud)

python matplotlib subplot

3
推荐指数
1
解决办法
3865
查看次数

获取 R 列表中除最后一项之外的所有项

x <- list("item one", "item two", "item three")
Run Code Online (Sandbox Code Playgroud)

如果我想在 Python 中选择除最后一项之外的所有项,我会使用x[:-1]. 我如何在 R 中执行此操作?

r list

3
推荐指数
1
解决办法
2813
查看次数

捕获并立即引发异常时避免“在处理上述异常期间发生另一个异常”

my_dictionary = {'a':1}
try:
    my_dictionary['b']
except KeyError as e:
    raise KeyError('Bad key:' + str(e))
Run Code Online (Sandbox Code Playgroud)

显然,该代码会引发KeyError

Traceback (most recent call last):

  File "----.py", line 11, in <module>
    my_dictionary['b']

KeyError: 'b'


During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File "----.py", line 13, in <module>
    raise KeyError('Bad key:' + str(e))

KeyError: "Bad key:'b'"
Run Code Online (Sandbox Code Playgroud)

虽然我理解 Python 需要说明该except部分如何创建自己的错误,但我希望首先KeyError不要显示这一点。我想出的一个解决方法是:

my_dictionary = {'a':1}
err_msg = None
try:
    my_dictionary['b']
except KeyError as e:
    err_msg = …
Run Code Online (Sandbox Code Playgroud)

python error-handling

2
推荐指数
1
解决办法
6262
查看次数

在Python 3中绘制3D多边形

在我以某种方式获得3D多边形实际绘图的过程中,我遇到了以下脚本(编辑:稍微修改):在python-matplotlib中绘制3D多边形

from mpl_toolkits.mplot3d import Axes3D
from matplotlib.collections import Poly3DCollection
import matplotlib.pyplot as plt
fig = plt.figure()
ax = Axes3D(fig)
x = [0,1,1,0]
y = [0,0,1,1]
z = [0,1,0,1]
verts = [zip(x, y,z)]
ax.add_collection3d(Poly3DCollection(verts),zs=z)
plt.show()
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,我收到以下错误消息:

TypeError: object of type 'zip' has no len()
Run Code Online (Sandbox Code Playgroud)

看起来这可能是Python 2对3的事情,因为我在Python 3中运行,而且该帖子已有五年了.所以我将第三行到最后一行改为:

verts = list(zip(x, y, z))
Run Code Online (Sandbox Code Playgroud)

现在verts显示在变量列表中,但我仍然收到错误:

TypeError: zip argument #1 must support iteration
Run Code Online (Sandbox Code Playgroud)

什么?我该如何解决?

python matplotlib mplot3d

1
推荐指数
1
解决办法
3518
查看次数

标签 统计

python ×7

matplotlib ×5

mplot3d ×2

plot ×2

3d ×1

error-handling ×1

latex ×1

layer ×1

list ×1

r ×1

scipy ×1

subplot ×1