小编Wil*_*ler的帖子

使用 imshow() 时,图像未显示在 Google Colab 中

我正在开发一个需要 OpenCV 函数来绘制图像的项目。我正在尝试在 Google Colab 中使用以下代码显示图像。但输出中没有显示任何内容。有人可以帮我解决这个问题吗?

%pylab notebook
import cv2

testim = imread('butterfly.jpg')
figure()
imshow(testim)
plt.show()
Run Code Online (Sandbox Code Playgroud)

截屏:

在此处输入图片说明

链接到我的 Colab 笔记本

opencv matplotlib show imshow google-colaboratory

22
推荐指数
3
解决办法
7万
查看次数

如何修复输出流 0:1 中的非单调 DTS;使用 ffmpeg 时

当我使用ffmpeg转换m3u8为 时mp4,我收到一些警告,

ffmpeg -i xx.m3u8 -c copy demo.mp4
Run Code Online (Sandbox Code Playgroud)

警告是

Non-monotonous DTS in output stream 0:1; previous: 3277744, current: 3276712; changing to 3277745. This may result in incorrect timestamps in the output file.
Non-monotonous DTS in output stream 0:1; previous: 3277745, current: 3277736; changing to 3277746. This may result in incorrect timestamps in the output file.
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能解决它?

ffmpeg m3u8

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

通过 Linux 命令将 Webp 图像转换为 PNG

我有很多webp format images in a folder but with .jpg` 扩展名

abc-test.jpg
Run Code Online (Sandbox Code Playgroud)

这是一个webp格式图像。我希望它以.png相同名称的格式转换,因为我使用了这个命令并且它有效

find . -name "*.jpg" -exec dwebp {} -o {}.png \;
Run Code Online (Sandbox Code Playgroud)

它将所有webp图像转换为,.png但问题是它正在保存这样的图像:

abc-test.jpg.png
Run Code Online (Sandbox Code Playgroud)

如何在没有.jpg扩展名的情况下保存它

abc-test.png
Run Code Online (Sandbox Code Playgroud)

linux command image webp

11
推荐指数
3
解决办法
5126
查看次数

Numpy asanyarray 与 asarray 的任何示例?

我在找一些例子显示之间的差异numpy.asanyarray()numpy.asarray()?在什么情况下我应该专门使用 asanyarray()?

python numpy machine-learning data-science

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

numpy.polyfit vs numpy.polynomial.polynomial.polyfit

为什么numpy.polyfitnumpy.polynomial.polynomial.polyfit 在下面的测试产生不同的情节?

import numpy as np
from numpy.polynomial.polynomial import polyfit
import matplotlib.pyplot as plt

x = np.linspace(0, 10, 50)
y = 5 * x + 10 + (np.random.random(len(x)) - 0.5) * 5

plt.scatter(x, y,marker='.', label='Data for regression')
plt.plot(np.unique(x), np.poly1d(np.polyfit(x, y, 1))(np.unique(x)), 
         label='numpy.polyfit')
plt.plot(np.unique(x), np.poly1d(polyfit(x, y, 1))(np.unique(x)), 
         label='polynomial.polyfit')
plt.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

python numpy

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

使用非零 alpha 值时,底图中的 pcolormesh 上会出现奇怪的线条

当在底图投影(或 cartopy 投影)上使用 pcolormesh 绘制数据时,我注意到当我将 alpha 值设置为小于 1 时,会出现奇怪的线条。

示例代码:

from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt

plt.clf()

dpp =1 # degrees per pixel
lons = np.arange(-180,180+dpp,dpp)
lats = -1*np.arange(-90,90+dpp,dpp)

m = Basemap(projection='robin',lon_0=0)
data = np.random.random((np.size(lats), np.size(lons)))
lons, lats = np.meshgrid(lons, lats)
x, y = m(lons, lats)

im = m.pcolormesh(x, y, x, latlon=False, cmap='RdBu')
#im = m.pcolormesh(lons, lats, data, latlon=True, cmap='RdBu')

m.colorbar(im)
plt.show()
Run Code Online (Sandbox Code Playgroud)

输出显示出现奇怪的行:

在此输入图像描述

如果我设置 alpha=1,线条就会消失并且行为符合预期:

在此输入图像描述

关于如何让 pcolormesh 使用非零 alpha 值有什么想法吗?

python matplotlib matplotlib-basemap cartopy

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

将 matplotlib 图例保存为单独的图像

在发布问题之前我浏览了以下链接。

在 Matplotlib 中将图例作为单独的图片获取

我无法为我的示例复制提供的解决方案。

这是我的数据框和代码。我想将图例保存为单独的图像。

df=pd.DataFrame(index=['A','B','C','D'], columns=['Values'])
df['Values'] = [0.45,0.28,0.21,0.3]

fig=plt.figure(figsize=(8,8))
ax1 = plt.subplot(121, aspect='equal')
df['Values'].dropna().plot(kind='pie', autopct='%1.0f%%', startangle=220, labels=None, 
                           colors=['#002c4b','#392e2c','#92847a','#ccc2bb','#6b879d'])

patches, labels = ax1.get_legend_handles_labels()
pp = ax1.legend(patches, labels=df.index, loc='center right', bbox_to_anchor=(0, 0.5), 
              fontsize=8, frameon=False, labelspacing=4)
ax1.axis('off')
plt.ylabel('')
img_name = 'unit1.png'   
plt.savefig(img_name,bbox_inches='tight', dpi = 300)
plt.close(fig)
Run Code Online (Sandbox Code Playgroud)

请提出前进的方向。

python matplotlib pandas

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

numpy polynomial.Polynomial.fit() 给出的系数与 polynomial.polyfit() 不同

我不明白为什么polynomial.Polynomial.fit()给出的系数与预期系数非常不同:

import numpy as np

x = np.linspace(0, 10, 50)
y = x**2 + 5 * x + 10

print(np.polyfit(x, y, 2))
print(np.polynomial.polynomial.polyfit(x, y, 2))
print(np.polynomial.polynomial.Polynomial.fit(x, y, 2))
Run Code Online (Sandbox Code Playgroud)

给出:

import numpy as np

x = np.linspace(0, 10, 50)
y = x**2 + 5 * x + 10

print(np.polyfit(x, y, 2))
print(np.polynomial.polynomial.polyfit(x, y, 2))
print(np.polynomial.polynomial.Polynomial.fit(x, y, 2))
Run Code Online (Sandbox Code Playgroud)

前两个结果都可以,感谢这个答案,我明白为什么两个数组的顺序相反。

但是,我不明白第三个结果的含义。尽管我以这种方式得到的多项式似乎给出了正确的预测值,但系数看起来是错误的。

python numpy curve-fitting polynomials

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

Seaborn:有没有更好的方法将文本包装在我的条形图中?

我正在编写一个条形图函数,并遇到了另一个小问题。我有一些 ytick 标签太长,导致我的 y 轴标签看不到。只有当我大幅减小 ytick 标签的大小时,我才能看到 y 标签。

def bar_plot(data, x, y, title):
    sns.set_style('darkgrid')
    data = data.sort_values(ascending=False, by=x)
    data = data.head(n=10)
    if (data[x]>1000000).any():
        data[x] = data[x] / 1000000
        ax = sns.barplot(data=data, x=x, y=y)
        ax.set_title(title, size=35)
        ax.set_xlabel(x + ' ($ Millions)', size=15)
        ax.set_ylabel(y, size=15)
        ax.set_yticklabels(data[y].head(n=10), wrap=True)

    else:
       ax = sns.barplot(data=data, x=x, y=y)
       ax.set_xlabel(x, size=15)
       ax.set_ylabel(y, size=15)
       ax.set_title(title, size=35)
       ax.set_yticklabels(data[y].head(n=10), wrap=True)
Run Code Online (Sandbox Code Playgroud)

我尝试过ax.set_yticklabels(data[y].head(n=10), wrap=True)将文本换行。虽然它有效,但它对文本的换行还不够。有没有办法告诉wrap=Truex 个字符后换行?我试过用谷歌搜索这个,但找不到任何有效的东西。

编辑

我正在使用的数据框的格式类似于

def bar_plot(data, x, y, title):
    sns.set_style('darkgrid')
    data = data.sort_values(ascending=False, by=x)
    data …
Run Code Online (Sandbox Code Playgroud)

python data-visualization matplotlib word-wrap seaborn

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

在 matplotlib 和 pandas 中很难组合和重新定位两个图表的图例

我试图将两个图表绘制到一个图形上,两个图表都来自同一个数据框,但一个表示为堆积条形图,另一个表示为简单的折线图。

当我使用以下代码创建绘图时:

combined.iloc[:, 1:10].plot(kind='bar', stacked=True, figsize=(20,10))
combined.iloc[:, 0].plot(kind='line', secondary_y=True, use_index=False, linestyle='-', marker='o')
plt.legend(loc='upper left', fancybox=True, framealpha=1, shadow=True, borderpad=1)
plt.show()
Run Code Online (Sandbox Code Playgroud)

随着combined数据帧寻找这样的:

源数据框

我得到以下图像:

叠加了 CVE 行数的堆积条形图

我试图将两个图例合二为一,并将图例放置在左上角,以便所有图表都可见。

有人可以解释为什么plt.legend()似乎只编辑与combined.iloc[:, 0]我的combined数据框切片相对应的折线图吗?如果有人能看到一种快速简便的组合和重新定位图例的方法,请告诉我!我将不胜感激。

python matplotlib legend pandas

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