草庐IT

在pycharm用python画图:matplotlib

RK_Dangerous 2024-02-10 原文

安装matplotlib

先找到自己的python位置,再进入Scripts文件夹,我的是C:\Users\mi\AppData\Local\Programs\Python\Python39\Scripts
一定要找对!否则下面的命令没有任何反应

以管理员身份打开cmd,用pip install --upgrade pip命令升级pip

若升级失败(没用管理员身份),回到上一级python39文件夹,用这个命令python -m ensurepip,然后python -m pip install --upgrade pip重新升级一下。

然后用python -m pip install matplotlib这个命令安装。

打开pycharm,点击File - Settings - Project: Python(我这里是Project: Lagrange) - Project Interpreter,检查是否安装成功。

使用import matplotlib,如果没报错即可正常使用。

如果还是报错,大概是因为从国外下载,修改下载源即可解决。
贴心复制清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/

画图举例

先举一个简单的小例子,是用线性插值拟合绘图。代码样例:

# 导入库
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
from scipy.optimize import leastsq


# 多项式函数
# np.polyld([c1,c0])函数用于生成多项式函数c1x^1+c0x^0
def fit_func(p, x):
    f = np.poly1d(p)
    return f(x)


# 残差函数
def error_func(p, x, y):
    err = fit_func(p, x) - y
    return err


# 需要使用numpy.array()将样本数据(xi,yi)转换成数组形式
x_data = np.array([1.51, 1.64, 1.6, 1.73, 1.82, 1.87])  # 创建x列表存储数据的x值
y_data = np.array([1.63, 1.7, 1.71, 1.72, 1.76, 1.86])  # 创建y列表存储数据的y值
x_predict = np.arange(1.5, 2, 0.1)  # 预测区间


# 使用最小二乘函数求解参数
# leastsq()函数位于Scipy的optimize模块中,利用leastsq()函数可以对数据进行拟合。
# 参数residuals_func表示误差函数
# 参数p_init表示初始c0、c1
# 数据点
p_init = np.random.randn(2)   # 生成2个随机数,作为各项系数的初始值,用于迭代修正
plsq = leastsq(error_func, p_init, args=(x_data, y_data))
# leastsq返回的是一个元组,元组的第一个元素是多项式系数数组
print("[c0,c1] = ", end='')
print(plsq[0])


# 绘制图像
plt.scatter(x_data, y_data, label="样本点", color="black", zorder=2)
plt.plot(x_predict, fit_func(plsq[0], x_predict), label="拟合结果", color="red", zorder=1)
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
plt.title("父亲身高(x)与孩子身高(y)数据集")
plt.legend(loc="upper left")
plt.show()


点击运行就可以。如下:

matplotlib教程

Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。Matplotlib 可以绘制线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等等。
Matplotlib 通常与 NumPy 和 SciPy(Scientific Python)一起使用, 这种组合广泛用于替代 MatLab

Pyplot

Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。

可以使用 import 导入 pyplot 库,并设置一个别名 plt:

import matplotlib.pyplot as plt

绘制好之后要使用plt.show()语句可以显示该语句上面的所有操作(上面写了几个图,就一次性显示几个图),而下面的操作则需要再写一个show()去显示。

首先需要知道几个重要的字符使用: (使用时需要加引号)

  • 颜色字符:(多条曲线不指定颜色时,会自动选择不同颜色。)
字符颜色
b蓝色
m洋红色
g绿色
y黄色
r红色
k黑色
w白色
c青绿色
#008000RGB 颜色符串
SeaGreen颜色名

其他颜色可以参考:HTML 颜色值

  • 线型参数
类型简写字符线型
solid(默认)实线
dashed‐‐破折线
dashdot‐.点划线
dotted:虚线
  • 标记字符
字符标记
.点标记
,像素标记(极小点)
o实心圈标记
v倒三角标记
^上三角标记
>右三角标记
<左三角标记
1下三叉
2上三叉
3左三叉
4右三叉
8八角形
s正方形
p五边形
P加号(填充)
*星号
h六边形 1
H六边形 2
+加号
x乘号 x
X乘号 x (填充)
D菱形
d瘦菱形
(这里写不出来,就是竖线符号)竖线
_横线
markers.0 (markers.TICKLEFT)左横线
markers.1 (markers.TICKRIGHT)右横线
markers.2 (markers.TICKUP)上竖线
markers.3 (markers.TICKDOWN)下竖线
markers.4 (markers.CARETLEFT)左箭头
markers.5 (markers.CARETRIGHT)右箭头
markers.6 (markers.CARETUP)上箭头
markers.7 (markers.CARETDOWN)下箭头
markers.8 (markers.CARETLEFTBASE)左箭头 (中间点为基准)
markers.9 (markers.CARETRIGHTBASE)右箭头 (中间点为基准)
markers.10 (markers.CARETUPBASE)上箭头 (中间点为基准)
markers.11 (markers.CARETDOWNBASE)下箭头 (中间点为基准)
“None” 、" "、 “”没有任何标记
$ … $(注意:中间没有空格)渲染指定的字符。例如 " $ f $ " 以字母 f 为标记。

plot()方法

import matplotlib.pyplot as plt
import numpy as np

"""
语法:

# 画单条线
plot([x], y, [fmt], *, data=None, **kwargs)

# 画多条线
plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)

参数说明:
x, y:点或线的节点,x 为 x 轴数据,y 为 y 轴数据,数据可以是列表或数组。
fmt:可选,定义基本格式(如颜色、标记和线条样式)。(后面会讲)
**kwargs:可选,用在二维平面图上,设置指定属性,如标签,线的宽度等。(后面会讲)
"""

xpoints = np.array([1, 8, 9])
ypoints = np.array([3, 10, 30])  # 必须确保x和y的数量相同

plt.plot(xpoints, ypoints)  # 使用默认样式(直线)
plt.show()

plt.plot(xpoints, ypoints, 'o')  # 不想要线,只需要描点(实心圈的标记)
plt.show()

plt.plot(ypoints)  # 如果不指定x轴上的点,则x会根据y的值来设置
plt.show()

# 当x间隔足够小时(如0.1),可以绘制出曲线
x = np.arange(0, 4*np.pi, 0.1)   # start,stop,step
y = np.sin(x)  # 两个周期的正弦
z = np.cos(x)  # 两个周期的余弦
plt.plot(x, y, x, z)  # 绘制两条曲线在同一个图像中
plt.show()




fmt详解

fmt参数定义了基本格式,如标记、线条样式和颜色。

fmt = '[marker][line][color]',fmt可以理解为是三种格式的简单集合,我们既可以一次性指定三种属性如plt.plot(ypoints, 'o:r'),也可以不适用fmt参数,而是单独使用后面的三个参数如plt.plot(ypoints, marker='o')plt.plot(ypoints, linestyle = 'dotted')来指定某种格式。(设置绘图样式可查询本章中的表格)

绘图标记marker
marker参数表示绘图标记,此外,还有一些额外的参数可以设置标记。

  • markersize,简写为 ms:定义标记的大小。如:ms = 20
  • markerfacecolor,简写为 mfc:定义标记内部的颜色。
  • markeredgecolor,简写为 mec:定义标记边框的颜色。

绘图线linestyle
绘图过程如果我们自定义线的样式,包括线的类型、颜色和大小等。

  • 线的类型可以使用linestyle参数来定义,简写为ls
  • 线的颜色可以使用color参数来定义,简写为c
  • 线的宽度可以使用linewidth参数来定义,简写为lw,值可以是浮点数。

轴标签和标题

使用xlabel()ylabel()方法来设置 x 轴和 y 轴的标签;使用title()方法来设置标题。
标签和标题的定位:

  • title()方法提供了loc参数来设置标题显示的位置,可以设置为: 'left''right',和'center',默认值为'center'
  • xlabel()方法提供了loc参数来设置 x 轴显示的位置,可以设置为: 'left''right',和'center',默认值为'center'
  • ylabel()方法提供了loc参数来设置 y 轴显示的位置,可以设置为: 'left''right',和'center',默认值为'center'
import numpy as np
import matplotlib.pyplot as plt

x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])
plt.plot(x, y)
plt.title("RUNOOB TEST TITLE")  # 设置标题
plt.xlabel("x - label")  # x轴的轴标签
plt.ylabel("y - label")  # y轴的轴标签

plt.show()


设置字体
Matplotlib默认情况不支持中文,需要额外设置字体。使用fontproperties参数设置字体的中文显示,使用fontsizesize设置字体大小,使用fontdict可以用css来设置字体样式。
若使用自己下载的字体,需要将字体文件放在当前执行的代码文件中。

import numpy as np
from matplotlib import pyplot as plt
import matplotlib

# 自定义字体
'''
# fname 为你下载的字体库路径(此处以SourceHanSansSC-Bold.otf字体文件为例)
font1 = matplotlib.font_manager.FontProperties(fname="SourceHanSansSC-Bold.otf", size=20)
'''

# 使用系统字体
"""
查看系统支持的字体:

a = sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist])
for i in a:
    print(i)
    
在输出中找到要用的字体,如STFangsong
"""
plt.rcParams['font.family'] = ['STFangsong']  # 将字体添加到plt中

x = np.arange(1, 11)
y = 2 * x + 5
font1 = {'color': 'blue', 'size': 20}  #使用CSS设置字体样式
# fontproperties设置中文显示,fontsize或size设置字体大小,fontdict设置字体样式
plt.title("标题", fontdict=font1)
plt.xlabel("x轴", fontproperties='STFangsong', fontsize=18)
plt.ylabel("y轴", fontproperties='STFangsong', size=18)
plt.plot(x, y)
plt.show()

grid()方法

可以使用pyplot中的grid()方法来设置图表中的网格线。

import numpy as np
from matplotlib import pyplot as plt
import matplotlib

'''
matplotlib.pyplot.grid(b=None, which='major', axis='both', )

参数说明:
b:可选,默认为 None,可以设置布尔值,true 为显示网格线,false 为不显示,如果设置 **kwargs 参数,则值为 true。
which:可选,可选值有 'major'、'minor' 和 'both',默认为 'major',表示应用更改的网格线。
axis:可选,设置显示哪个方向的网格线,可以是取 'both'(默认),'x' 或 'y',分别表示两个方向,x 轴方向或 y 轴方向。
**kwargs:可选,设置网格样式,可以是 color='r', linestyle='-' 和 linewidth=2,分别表示网格线的颜色,样式和宽度。
'''

x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])

plt.title("RUNOOB grid() Test")
plt.xlabel("x - label")
plt.ylabel("y - label")
plt.plot(x, y)
plt.grid(color='r', linestyle='--', linewidth=0.5)
plt.show()

subplot()和subplots()

可以使用pyplot中的subplot()subplots()方法来绘制多个子图。subplot()方法在绘图时需要指定位置,subplots()方法可以一次生成多个,在调用时只需要调用生成对象的 ax 即可。

subplot():

subplot(nrows, ncols, index, **kwargs)

subplot函数将整个绘图区域分成 nrows 行和 ncols 列,然后从左到右、从上到下对每个子区域进行编号1…N,左上的子区域的编号为 1、右下的区域编号为N,index参数表示下面要绘制的子图的编号。
例如设置 numRows = 2,numCols = 2,就是将图表绘制成 2x2 的图片区域, 对应的编号为:

例:

import matplotlib.pyplot as plt
import numpy as np

# plot 1:
x = np.array([0, 6])
y = np.array([0, 100])

plt.subplot(2, 2, 1)
plt.plot(x, y)  # 子图的绘制方法像大图一样,就是上面用subplot指定了位置而已
plt.title("plot 1")

# plot 2:
x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])

plt.subplot(2, 2, 2)
plt.plot(x, y)
plt.title("plot 2")

# plot 3:
x = np.array([1, 2, 3, 4])
y = np.array([3, 5, 7, 9])

plt.subplot(2, 2, 3)
plt.plot(x, y)
plt.title("plot 3")

# plot 4:
x = np.array([1, 2, 3, 4])
y = np.array([4, 5, 6, 7])

plt.subplot(2, 2, 4)
plt.plot(x, y)
plt.title("plot 4")

plt.suptitle("RUNOOB subplot Test")  # 设置标题
plt.show()


subplots():

import matplotlib.pyplot as plt
import numpy as np

"""
matplotlib.pyplot.subplots(nrows=1, ncols=1, *, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)

参数说明:
nrows:默认为 1,设置图表的行数。
ncols:默认为 1,设置图表的列数。
sharex、sharey:设置 x、y 轴是否共享属性,默认为 false,可设置为 'none'、'all'、'row' 或 'col'。
        False 或 none 每个子图的 x 轴或 y 轴都是独立的,True 或 'all' 所有子图共享 x 轴或 y 轴;
        'row' 设置每个子图行共享一个 x 轴或 y 轴,'col' 设置每个子图列共享一个 x 轴或 y 轴。
squeeze:布尔值,默认为 True,表示额外的维度从返回的 Axes(轴)对象中挤出,对于 N*1 或 1*N 个子图,返回一个 1 维数组,对于 N*M,N>1 和 M>1 返回一个 2 维数组。
    如果设置为 False,则不进行挤压操作,返回一个元素为 Axes 实例的2维数组,即使它最终是1x1。
subplot_kw:可选,字典类型。把字典的关键字传递给 add_subplot() 来创建每个子图。
gridspec_kw:可选,字典类型。把字典的关键字传递给 GridSpec 构造函数创建子图放在网格里(grid)。
**fig_kw:把详细的关键字参数传给 figure() 函数。
"""

x = np.linspace(0, 2*np.pi, 400)
y = np.sin(x**2)

# subplots初步了解
fig, ax = plt.subplots()  # 返回一个元组,第二个元素ax是matplotlib.axes._subplots.AxesSubplot类型
ax.plot(x, y)  # matplotlib.axes._subplots.AxesSubplot也有plot方法?
ax.set_title('Simple plot')  # 设置标题的方法
plt.show()

# 共享y轴的两个子图
fig, (ax1, ax2) = plt.subplots(1, 2, sharey=True)  # 每个子图都有名字
ax1.plot(x, y)
ax1.set_title('Sharing Y axis')  # 给子图设置标题
ax2.scatter(x, y)  # scatter方法用来描点,后面会讲
plt.show()

# 创建四个子图
fig, axs = plt.subplots(2, 2, subplot_kw=dict(projection="polar"))  # 子图也可以用坐标
# subplot_kw=dict(projection="polar") 应该是用来设置坐标轴,具体情况暂时不研究了
axs[0, 0].plot(x, y)
axs[1, 1].scatter(x, y)
plt.show()

# 每个列共享x轴
plt.subplots(2, 2, sharex='col')
# 每个行共享y轴
plt.subplots(2, 2, sharey='row')
# 每个列共享x轴且每个行共享y轴
plt.subplots(2, 2, sharex='all', sharey='all')
# 同上
plt.subplots(2, 2, sharex=True, sharey=True)
plt.show()

# 创建标识(左上角窗口编号)为10的图,已经存在的则删除
fig, ax = plt.subplots(num=10, clear=True)  # num和clear参数之前没见过
plt.show()





scatter()

scatter()方法来绘制散点图。

import matplotlib.pyplot as plt
import numpy as np

"""
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, 
                            linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)

参数说明:
x,y:长度相同的数组,也就是我们即将绘制散点图的数据点,输入数据。
s:点的大小,默认 20,也可以是个数组,数组每个参数为对应点的大小。
c:点的颜色,默认蓝色 'b',也可以是个 RGB 或 RGBA 二维行数组。
marker:点的样式,默认小圆圈 'o'。
cmap:Colormap,选择颜色条,Matplotlib 模块提供了很多可用的颜色条,其中每种颜色(color)都有一个范围从0到100的值。
    如果要在图中显示颜色条,需要使用plt.colorbar()方法。颜色条的名称见附录。
norm:Normalize,默认 None,数据亮度在 0-1 之间,只有 c 是一个浮点数的数组的时才使用。
vmin,vmax:亮度设置,在 norm 参数存在时会忽略。
alpha:透明度设置,0-1 之间,默认 None,即不透明。
linewidths:标记点的长度。
edgecolors:颜色或颜色序列,默认为 'face',可选值有 'face', 'none', None。
plotnonfinite:布尔值,设置是否使用非限定的 c ( inf, -inf 或 nan) 绘制点。
**kwargs:其他参数。
"""

# 自定义大小和颜色
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
sizes = np.array([20, 50, 100, 200, 500, 1000, 60, 90])
colors = np.array(["red", "green", "black", "orange", "purple", "beige", "cyan", "magenta"])
plt.scatter(x, y, s=sizes, c=colors)
plt.show()

# 设置两组散点图
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
plt.scatter(x, y, color='hotpink')
x = np.array([2, 2, 8, 1, 15, 8, 12, 9, 7, 3, 11, 4, 7, 14, 12])
y = np.array([100, 105, 84, 105, 90, 99, 90, 95, 94, 100, 79, 112, 91, 80, 85])
plt.scatter(x, y, color='#88c999')
plt.title("RUNOOB Scatter Test")  # 设置标题
plt.show()


bar()和barh()

使用pyplot中的bar()方法来绘制柱形图。

import matplotlib.pyplot as plt
import numpy as np

"""
matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)

参数说明:
x:浮点型数组,柱形图的 x 轴数据。
height:浮点型数组,柱形图的高度。
width:浮点型数组,柱形图的宽度。
bottom:浮点型数组,底座的 y 坐标,默认 0。
align:柱形图与 x 坐标的对齐方式,'center' 以 x 位置为中心,这是默认值。
    'edge':将柱形图的左边缘与 x 位置对齐。要对齐右边缘的条形,可以传递负数的宽度值及 align='edge'。
**kwargs::其他参数。
"""

# 简单使用
x = np.array(["Runoob-1", "Runoob-2", "Runoob-3", "C-RUNOOB"])
y = np.array([12, 22, 6, 18])
plt.bar(x, y)
plt.show()

# 垂直方向的柱形图可以使用barh()方法来设置
plt.barh(x, y)
plt.show()
# bar()方法使用width设置宽度,barh()方法使用height设置

# 参数color = "#4CAF50" 设置颜色
# color = ["#4CAF50","red","hotpink","#556B2F"] 自定义各个柱形的颜色


pie()

使用pyplot中的pie()方法来绘制饼图。

import matplotlib.pyplot as plt
import numpy as np

"""
matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, 
                        labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, 
                        center=0, 0, frame=False, rotatelabels=False, *, normalize=None, data=None)[source]
                        
参数说明:
x:浮点型数组,表示每个扇形的面积。
explode:数组,表示各个扇形之间的间隔,默认值为0。
labels:列表,各个扇形的标签,默认值为 None。
colors:数组,表示各个扇形的颜色,默认值为 None。
autopct:设置饼图内各个扇形百分比显示格式,%d%% 整数百分比,%0.1f 一位小数, %0.1f%% 一位小数百分比, %0.2f%% 两位小数百分比。
labeldistance:标签标记的绘制位置,相对于半径的比例,默认值为 1.1,如 <1则绘制在饼图内侧。
pctdistance::类似于 labeldistance,指定 autopct 的位置刻度,默认值为 0.6。
shadow::布尔值 True 或 False,设置饼图的阴影,默认为 False,不设置阴影。
radius::设置饼图的半径,默认为 1。
startangle::起始绘制饼图的角度,默认为从 x 轴正方向逆时针画起,如设定 =90 则从 y 轴正方向画起。
counterclock:布尔值,设置指针方向,默认为 True,即逆时针,False 为顺时针。
wedgeprops :字典类型,默认值 None。参数字典传递给 wedge 对象用来画一个饼图。例如:wedgeprops={'linewidth':5} 设置 wedge 线宽为5。
textprops :字典类型,默认值为:None。传递给 text 对象的字典参数,用于设置标签(labels)和比例文字的格式。
center :浮点类型的列表,默认值:(0,0)。用于设置图标中心位置。
frame :布尔类型,默认值:False。如果是 True,绘制带有表的轴框架。
rotatelabels :布尔类型,默认为 False。如果为 True,旋转每个 label 到指定的角度。
"""

# 简单使用
y = np.array([35, 25, 25, 15])

plt.pie(y,
        labels=['A', 'B', 'C', 'D'],  # 设置饼图标签
        colors=["#d5695d", "#5d8ca8", "#65a479", "#a564c9"],  # 设置饼图颜色
        explode=(0, 0.2, 0, 0),  # 第二部分突出显示,值越大,距离中心越远
        autopct='%.2f%%',  # 格式化输出百分比
       )
plt.title("RUNOOB Pie Test")
plt.show()

附录

颜色条

颜色名称保留关键字
AccentAccent_r
BluesBlues_r
BrBGBrBG_r
BuGnBuGn_r
BuPuBuPu_r
CMRmapCMRmap_r
Dark2Dark2_r
GnBuGnBu_r
GreensGreens_r
GreysGreys_r
OrRdOrRd_r
OrangesOranges_r
PRGnPRGn_r
PairedPaired_r
Pastel1Pastel1_r
Pastel2Pastel2_r
PiYGPiYG_r
PuBuPuBu_r
PuBuGnPuBuGn_r
PuOrPuOr_r
PuRdPuRd_r
PurplesPurples_r
RdBuRdBu_r
RdGyRdGy_r
RdPuRdPu_r
RdYlBuRdYlBu_r
RdYlGnRdYlGn_r
RedsReds_r
Set1Set1_r
Set2Set2_r
Set3Set3_r
SpectralSpectral_r
WistiaWistia_r
YlGnYlGn_r
YlGnBuYlGnBu_r
YlOrBrYlOrBr_r
YlOrRdYlOrRd_r
afmhotafmhot_r
autumnautumn_r
binarybinary_r
bonebone_r
brgbrg_r
bwrbwr_r
cividiscividis_r
coolcool_r
coolwarmcoolwarm_r
coppercopper_r
cubehelixcubehelix_r
flagflag_r
gist_earthgist_earth_r
gist_graygist_gray_r
gist_heatgist_heat_r
gist_ncargist_ncar_r
gist_rainbowgist_rainbow_r
gist_sterngist_stern_r
gist_yarggist_yarg_r
gnuplotgnuplot_r
gnuplot2gnuplot2_r
graygray_r
hothot_r
hsvhsv_r
infernoinferno_r
jetjet_r
magmamagma_r
nipy_spectralnipy_spectral_r
oceanocean_r
pinkpink_r
plasmaplasma_r
prismprism_r
rainbowrainbow_r
seismicseismic_r
springspring_r
summersummer_r
tab10tab10_r
tab20tab20_r
tab20btab20b_r
tab20ctab20c_r
terrainterrain_r
twilighttwilight_r
twilight_shiftedtwilight_shifted_r
viridisviridis_r
winterwinter_r








参考来源:
在Pycharm中安装matplotlib
Matplotlib安装
在Pycharm中安装matplotlib
pip install XXX总是报错,例如:Exception: Traceback (most recent call last):这种错误怎么办?

有关在pycharm用python画图:matplotlib的更多相关文章

  1. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  2. Python 相当于 Perl/Ruby ||= - 2

    这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。

  3. java - 什么相当于 ruby​​ 的 rack 或 python 的 Java wsgi? - 2

    什么是ruby​​的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht

  4. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

  5. python - 如何读取 MIDI 文件、更改其乐器并将其写回? - 2

    我想解析一个已经存在的.mid文件,改变它的乐器,例如从“acousticgrandpiano”到“violin”,然后将它保存回去或作为另一个.mid文件。根据我在文档中看到的内容,该乐器通过program_change或patch_change指令进行了更改,但我找不到任何在已经存在的MIDI文件中执行此操作的库.他们似乎都只支持从头开始创建的MIDI文件。 最佳答案 MIDIpackage会为您完成此操作,但具体方法取决于midi文件的原始内容。一个MIDI文件由一个或多个音轨组成,每个音轨是十六个channel中任何一个上的

  6. 「Python|Selenium|场景案例」如何定位iframe中的元素? - 2

    本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决

  7. python ffmpeg 使用 pyav 转换 一组图像 到 视频 - 2

    2022/8/4更新支持加入水印水印必须包含透明图像,并且水印图像大小要等于原图像的大小pythonconvert_image_to_video.py-f30-mwatermark.pngim_dirout.mkv2022/6/21更新让命令行参数更加易用新的命令行使用方法pythonconvert_image_to_video.py-f30im_dirout.mkvFFMPEG命令行转换一组JPG图像到视频时,是将这组图像视为MJPG流。我需要转换一组PNG图像到视频,FFMPEG就不认了。pyav内置了ffmpeg库,不需要系统带有ffmpeg工具因此我使用ffmpeg的python包装p

  8. Python 刷Leetcode题库,顺带学英语单词(31) - 2

    ValidPalindromeGivenastring,determineifitisapalindrome,consideringonlyalphanumericcharactersandignoringcases. [#125]Example:"Aman,aplan,acanal:Panama"isapalindrome."raceacar"isnotapalindrome.Haveyouconsiderthatthestringmightbeempty?Thisisagoodquestiontoaskduringaninterview.Forthepurposeofthisproblem

  9. python - 是否可以使用 Ruby 或 Python 禁用 anchor /引用来发出有效的 YAML? - 2

    是否可以在PyYAML或Ruby的Psych引擎中禁用创建anchor和引用(并有效地显式列出冗余数据)?也许我在网上搜索时遗漏了一些东西,但在Psych中似乎没有太多可用的选项,而且我也无法确定PyYAML是否允许这样做.基本原理是我必须序列化一些数据并将其以可读的形式传递给一个不是真正的技术同事进行手动验证。有些数据是多余的,但我需要以最明确的方式列出它们以提高可读性(anchor和引用是提高效率的好概念,但不是人类可读性)。Ruby和Python是我选择的工具,但如果有其他一些相当简单的方法来“展开”YAML文档,它可能就可以了。 最佳答案

  10. .net - .NET 将如何影响 Python 和 Ruby 应用程序? - 2

    我很好奇.NET将如何影响Python和Ruby应用程序。用IronPython/IronRuby编写的应用程序是否会非常特定于.NET环境,以至于它们实际上将变得特定于平台?如果他们不使用任何.NET功能,那么IronPython/IronRuby相对于非.NET同类产品的优势是什么? 最佳答案 我不能说任何关于IronRuby的东西,但是大多数Python实现(如IronPython、Jython和PyPy)都试图尽可能忠实于CPython实现。不过,IronPython正在迅速成为这方面的佼佼者之一,并且在PlanetPyth

随机推荐