小编fri*_*hax的帖子

如何在matplotlib中创建无衬线上标或下标文本?

我想在matplotlib图中的轴标签中使用下标.使用LaTeX我会将其设置为$N_i$,这给了我斜体衬线字体.我知道我可以使用非斜体数学\mathrm.但我想在默认的matplotlib sans-serif字体中获取文本,以便它匹配图中其余文本.有没有办法下标文本而不使用乳胶?

python fonts latex matplotlib

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

Python:检查值属于哪个bin

我有一个值列表和bin边缘列表.现在我需要检查它们属于哪个bin的所有值.是否有更多的pythonic方式,而不是迭代值,然后遍历bin并检查值是否属于当前bin,如:

my_list = [3,2,56,4,32,4,7,88,4,3,4]
bins = [0,20,40,60,80,100]

for i in my_list:
    for j in range(len(bins)):
        if bins(j) < i < bins(j+1):
            DO SOMETHING
Run Code Online (Sandbox Code Playgroud)

这对我来说看起来不太漂亮.谢谢!

python range binning

11
推荐指数
2
解决办法
8573
查看次数

颜色编码matplotlib标记

我正在尝试对我的情节标记进行颜色编码.

该想法是存在x,y和z值 - 包含坐标的x和y,z包含对应于0和150之间的每个坐标(即,x,y对)的数字.

现在,我需要为每个坐标绘制一个正方形,我完成了pyplot.plot(x,y, ls='s'),我可以分别设置标记边缘和面部颜色.通常,所有这些方块都具有相同的颜色.

我想要的是根据z值改变颜色,例如

z = 0-30:黑色,30-60:蓝色,60-90:绿色,90-120:黄色,120-150:红色

我尝试将数据分箱到那些箱子,但我不知道如何将其映射到颜色并相应地绘制它.

有什么建议?谢谢!

python colors matplotlib

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

matplotlib修剪刻度标签

我正在使用GridSpec绘制一个在另一个之下的两个图,两者之间没有间隙

gs = gridspec.GridSpec(3, 1)
gs.update(hspace=0., wspace=0.)
ax1 = plt.subplot(gs[0:2, 0])
ax2 = plt.subplot(gs[2, 0], sharex=ax1)
Run Code Online (Sandbox Code Playgroud)

哪个工作正常.但是,我想摆脱每个子图的顶部和底部刻度标签.为此,我使用

nbins = len(ax1.get_yticklabels())
ax1.yaxis.set_major_locator(MaxNLocator(nbins=nbins, prune='both'))
nbins = len(ax2.get_yticklabels())
ax2.yaxis.set_major_locator(MaxNLocator(nbins=nbins, prune='both'))
Run Code Online (Sandbox Code Playgroud)

在许多情况下工作正常.然而,在一些图中,要修剪的4个标记中的一个或多个仍然存在.我看了例如,ax1.get_ylim()并注意到,而不是例如上限10(正如它在图中所示),实际上10.000000000000002,我怀疑是它没有被修剪的原因.这是怎么发生的,我怎么能摆脱它呢?

这是一个例子:请注意,在图中,y轴被反转,没有标签被修剪,尽管它应该是.另请注意,由于某种原因,最低y标签设置为负位置,我看不到.y刻度位置显示在图中文本的轴坐标中.在下图中,10.6处的标签不应该在那里!

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
from matplotlib.ticker import MaxNLocator
import numpy as np

x1 = 1
y1 = 10.53839
err1 = 0.00865
x2 = 2
y2 = 9.43045
err2 = 0.00658

plt.clf()
fig = plt.figure(figsize=(6, 6))
gs = gridspec.GridSpec(3, 1)
gs.update(hspace=0., wspace=0.) …
Run Code Online (Sandbox Code Playgroud)

python matplotlib labels

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

加快python循环

我正在尝试加速以下python代码:

for j in range(4,len(var_s),3):
    mag_list.append(float(var_s[j]))
mag_list = [value for value in mag_list if value != 99.]
med_mag = np.median(mag_list)
Run Code Online (Sandbox Code Playgroud)

有没有一种很好的方法将两个for循环合并为一个?这样,它真的很慢.我需要的是从var_s列表中提取每个第三个条目,从五分之一开始,如果该条目的值不等于99.在结果列表中,我需要中位数.谢谢!

python performance for-loop

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

matplotlib 直方图中的圆条

matplotlib.pyplot.hist()在 python 中用于直方图。如果我使用可见的边宽,例如在使用 时histtype='step',单条的上角略圆。我希望它们变成锐利的矩形。我已经尝试使用solid_capstyle关键字,它可以影响线图的形状,但这在hist(). 关于如何做到这一点的任何想法?谢谢!

这是我最小的独立示例

import numpy as np
import matplotlib.pyplot as plt

mu = 200
sigma = 25
x = mu + sigma*np.random.randn(10000)

fig, (ax0, ax1) = plt.subplots(ncols=2, figsize=(8, 4))
ax0.hist(x, 20, normed=1, histtype='step', facecolor='g', alpha=0.75, linewidth=4.)
ax0.set_title('step')
# Create a histogram by providing the bin edges (unequally spaced).
bins = [100, 150, 180, 195, 205, 220, 250, 300]
ax1.hist(x, bins, normed=1, histtype='step', rwidth=0.8, linewidth=4.)
ax1.set_title('unequal bins')
plt.tight_layout()
plt.savefig('test.png', dpi=200)
Run Code Online (Sandbox Code Playgroud)

python matplotlib histogram

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

了解matplotlib顶点

我正在尝试在matplotlib中为散点图创建自定义标记,其中标记是具有固定高度和不同宽度的矩形.每个标记的宽度是y值的函数.我尝试使用此代码作为模板,并假设如果顶点给出N个二维元组的列表,它会绘制具有相应第一个值的宽度和第二个值的高度的矩形(可能这已经错了,但那么我怎么做到这一点?).

我有一个x和y值列表,每个值包含以度为单位的角度.然后,我计算每个标记的宽度和高度

field_size = 2.
symb_vec_x = [(field_size / np.cos(i * np.pi / 180.)) for i in y]
symb_vec_y = [field_size for i in range(len(y))]
Run Code Online (Sandbox Code Playgroud)

并构建顶点列表并绘制所有内容

symb_vec = list(zip(symb_vec_x, symb_vec_y))
fig = plt.figure(1, figsize=(14.40, 9.00))
ax = fig.add_subplot(1,1,1)
sc = ax.scatter(ra_i, dec_i, marker='None', verts=symb_vec)
Run Code Online (Sandbox Code Playgroud)

但结果图是空的,但没有错误信息.任何人都可以告诉我在定义顶点时做错了什么以及如何正确操作?谢谢!

python scatter matplotlib

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

查找在Python中列出最接近特定值的项目

我有一个排序的浮动列表y,以及未排序的浮动列表x.

现在,我需要找出它x之间的每个元素y,最好是索引y.例如,如果

y=[1,2,3,4,5]

x[0]=3.5 
Run Code Online (Sandbox Code Playgroud)

我需要为指数输出0x(2,3),因为3.5是之间y[2]y[3].

基本上,我认为它与看到ybin边缘和排序x到那些箱子是一样的.

你最容易做到的是什么?

python nearest-neighbor bins

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

matplotlib 获取轴相对刻度位置

我知道我可以通过ax.get_yticks()(顺便说一句,这是获得它们的最佳/正确方法?)来获得我的 y-ticks 的位置。但我需要相对于轴限制的刻度位置(即,在 0 和 1 之间)。获得它的最佳方法是什么?我试过了ax.get_yticks(transform=ax.transAxes),这不起作用。

python axes matplotlib

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

按索引将列表映射到列表(Python)

我正在寻找一种有效的方法来映射价值列表

x = [1,2,3,4,5,6,7,8,9] 
Run Code Online (Sandbox Code Playgroud)

例如,到另一个列表,包含相同总范围的值列表

z = [[1,2,3], [4,5,6], [7,8,9]]. 
Run Code Online (Sandbox Code Playgroud)

我需要知道的是基本上索引x中的值对应于z.x[0]=1将对应于z[0],因为它落在z的第一个bin中,其中x[7]=8对应于z[2],因为它落在第三个bin中.

如何为每个x值标识z的子列表的索引?在我的情况下,x有大约50,000个值,z有大约5,000个子列表,我有很多这些列表,所以我正在寻找一种尽可能快的方法.

python mapping list binning

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