python 画图

来源:互联网 发布:sql stuff用法 编辑:程序博客网 时间:2024/05/21 06:45

python 画图--简单开始及折线图


相关参考资料:

matplotlib官方文档:http://matplotlib.org/api/pyplot_summary.html  (api的调用及一些示例代码)

一个中文版的文档(不全):http://old.sebug.net/paper/books/scipydoc/matplotlib_intro.html

matplotlib较详细的剖析:http://www.cnblogs.com/vamei/archive/2013/01/30/2879700.html

三种图的绘制:http://www.cnblogs.com/hustlx/p/5264562.html

多张图的绘制:http://www.2cto.com/kf/201407/317115.html


一、环境准备

           linux ubuntu 下需安装下面三个包:
                  Numpy, Scipy,Matplotlib
         分别输入下面的代码进行安装:
[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. pip install numpy  
  2. pip install scipy  
  3. sudo apt-get install python-matplotlib  
          
       测试是否安装成功
[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. python  
  2. >>> import pylab    
    如果没有报错则安装成功

二、开始画图

      1. 画最简单的直线图

  代码如下:
[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. import numpy as np  
  2. import matplotlib.pyplot as plt  
  3.   
  4. x=[0,1]  
  5. y=[0,1]  
  6. plt.figure()  
  7. plt.plot(x,y)  
  8. plt.savefig("easyplot.jpg")  

结果如下:



代码解释:
[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. #x轴,y轴  
  2. x=[0,1]  
  3. y=[0,1]  
  4. #创建绘图对象  
  5. plt.figure()  
  6. #在当前绘图对象进行绘图(两个参数是x,y轴的数据)  
  7. plt.plot(x,y)  
  8. #保存图象  
  9. plt.savefig("easyplot.jpg")  

    2. 给图加上标签与标题

       上面的图没有相应的X,Y轴标签说明与标题
        在上述代码基础上,可以加上这些内容
       代码如下:
[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. import numpy as np  
  2. import matplotlib.pyplot as plt  
  3.   
  4. x=[0,1]  
  5. y=[0,1]  
  6.   
  7. plt.figure()  
  8. plt.plot(x,y)  
  9. plt.xlabel("time(s)")  
  10. plt.ylabel("value(m)")  
  11. plt.title("A simple plot")  


结果如下:
代码解释:
[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. plt.xlabel("time(s)"#X轴标签  
  2. plt.ylabel("value(m)"#Y轴标签  
  3. plt.title("A simple plot"#标题  


  3. 画sinx曲线

代码如下:
[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. # -*- coding: utf-8 -*-  
  2. import numpy as np  
  3. import matplotlib.pyplot as plt  
  4.   
  5. #设置x,y轴的数值(y=sinx)  
  6. x = np.linspace(0101000)  
  7. y = np.sin(x)  
  8.   
  9. #创建绘图对象,figsize参数可以指定绘图对象的宽度和高度,单位为英寸,一英寸=80px  
  10. plt.figure(figsize=(8,4))  
  11.   
  12. #在当前绘图对象中画图(x轴,y轴,给所绘制的曲线的名字,画线颜色,画线宽度)  
  13. plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)  
  14.   
  15. #X轴的文字  
  16. plt.xlabel("Time(s)")  
  17.   
  18. #Y轴的文字  
  19. plt.ylabel("Volt")  
  20.   
  21. #图表的标题  
  22. plt.title("PyPlot First Example")  
  23.   
  24. #Y轴的范围  
  25. plt.ylim(-1.2,1.2)  
  26.   
  27. #显示图示  
  28. plt.legend()  
  29.   
  30. #显示图  
  31. plt.show()  
  32.   
  33. #保存图  
  34. plt.savefig("sinx.jpg")  

结果如下:


4. 画折线图

代码如下:
[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. # -*- coding: utf-8 -*-  
  2. import numpy as np  
  3. import matplotlib.pyplot as plt  
  4. #X轴,Y轴数据  
  5. x = [0,1,2,3,4,5,6]  
  6. y = [0.3,0.4,2,5,3,4.5,4]  
  7. plt.figure(figsize=(8,4)) #创建绘图对象  
  8. plt.plot(x,y,"b--",linewidth=1)   #在当前绘图对象绘图(X轴,Y轴,蓝色虚线,线宽度)  
  9. plt.xlabel("Time(s)"#X轴标签  
  10. plt.ylabel("Volt")  #Y轴标签  
  11. plt.title("Line plot"#图标题  
  12. plt.show()  #显示图  
  13. plt.savefig("line.jpg"#保存图  
结果如下:




python画图--柱状图

在上一篇(Python画图--简单开始及折线图)的基础上,下面我们来画柱状图

有两种柱状图(一种为histogram, 另一种为bar chart)

一、bar chart

主要用的方法为:


atplotlib.pyplot.bar(leftheightwidth=0.8bottom=Nonehold=Nonedata=None**kwargs)

参数说明:

left: 每一个柱形左侧的X坐标

height:每一个柱形的高度

width: 柱形之间的宽度

bottom: 柱形的Y坐标

color: 柱形的颜色

下面是代码示例:

[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. # -*- coding: utf-8 -*-  
  2. import numpy as np    
  3. import matplotlib.mlab as mlab    
  4. import matplotlib.pyplot as plt    
  5.   
  6. X=[0,1,2,3,4,5]  
  7. Y=[222,42,455,664,454,334]    
  8. fig = plt.figure()  
  9. plt.bar(X,Y,0.4,color="green")  
  10. plt.xlabel("X-axis")  
  11. plt.ylabel("Y-axis")  
  12. plt.title("bar chart")  
  13.     
  14.   
  15. plt.show()    
  16. plt.savefig("barChart.jpg")  

结果如下:



下面是另一个例子:

[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. # -*- coding: utf-8 -*-  
  2. import numpy as np  
  3. import matplotlib.pyplot as plt  
  4. import matplotlib as mpl  
  5.   
  6. def draw_bar(labels,quants):  
  7.     width = 0.4  
  8.     ind = np.linspace(0.5,9.5,10)  
  9.     # make a square figure  
  10.     fig = plt.figure(1)  
  11.     ax  = fig.add_subplot(111)  
  12.     # Bar Plot  
  13.     ax.bar(ind-width/2,quants,width,color='green')  
  14.     # Set the ticks on x-axis  
  15.     ax.set_xticks(ind)  
  16.     ax.set_xticklabels(labels)  
  17.     # labels  
  18.     ax.set_xlabel('Country')  
  19.     ax.set_ylabel('GDP (Billion US dollar)')  
  20.     # title  
  21.     ax.set_title('Top 10 GDP Countries', bbox={'facecolor':'0.8''pad':5})  
  22.     plt.grid(True)  
  23.     plt.show()  
  24.     plt.savefig("bar.jpg")  
  25.     plt.close()  
  26.   
  27. labels   = ['USA''China''India''Japan''Germany''Russia''Brazil''UK''France''Italy']  
  28.   
  29. quants   = [15094025.011299967.04457784.04440376.03099080.02383402.02293954.02260803.02217900.01846950.0]  
  30.   
  31. draw_pie(labels,quants)  
结果如下:



下面是官方文档有关于bar chart的说明:

链接:http://matplotlib.org/api/pyplot_api.html

matplotlib.pyplot.bar(leftheightwidth=0.8bottom=Nonehold=Nonedata=None**kwargs)

Make a bar plot.

Make a bar plot with rectangles bounded by:

leftleft + widthbottombottom + height
(left, right, bottom and top edges)
Parameters:

left : sequence of scalars

the x coordinates of the left sides of the bars

height : sequence of scalars

the heights of the bars

width : scalar or array-like, optional

the width(s) of the bars default: 0.8

bottom : scalar or array-like, optional

the y coordinate(s) of the bars default: None

color : scalar or array-like, optional

the colors of the bar faces

edgecolor : scalar or array-like, optional

the colors of the bar edges

linewidth : scalar or array-like, optional

width of bar edge(s). If None, use default linewidth; If 0, don’t draw edges. default: None

tick_label : string or array-like, optional

the tick labels of the bars default: None

xerr : scalar or array-like, optional

if not None, will be used to generate errorbar(s) on the bar chart default: None

yerr : scalar or array-like, optional

if not None, will be used to generate errorbar(s) on the bar chart default: None

ecolor : scalar or array-like, optional

specifies the color of errorbar(s) default: None

capsize : scalar, optional

determines the length in points of the error bar caps default: None, which will take the value from theerrorbar.capsize rcParam.

error_kw : dict, optional

dictionary of kwargs to be passed to errorbar method. ecolor and capsize may be specified here rather than as independent kwargs.

align : {‘edge’, ‘center’}, optional

If ‘edge’, aligns bars by their left edges (for vertical bars) and by their bottom edges (for horizontal bars). If ‘center’, interpret the left argument as the coordinates of the centers of the bars. To align on the align bars on the right edge pass a negative width.

orientation : {‘vertical’, ‘horizontal’}, optional

The orientation of the bars.

log : boolean, optional

If true, sets the axis to be log scale. default: False

Returns:

bars : matplotlib.container.BarContainer

Container with all of the bars + errorbars

See also

barh
Plot a horizontal bar plot.

Notes

In addition to the above described arguments, this function can take a data keyword argument. If such a data argument is given, the following arguments are replaced by data[<arg>]:

  • All arguments with the following names: ‘height’, ‘color’, ‘ecolor’, ‘edgecolor’, ‘bottom’, ‘tick_label’, ‘width’, ‘yerr’, ‘xerr’, ‘linewidth’, ‘left’.

Additional kwargs: hold = [True|False] overrides default hold state

Examples

Example: A stacked bar chart.

(Source code, png, hires.png, pdf)

../_images/bar_stacked.png

二、histogram

[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">主要用的的方法为:</span>  

plt.hist()

先来了解一下hist的参数:

[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. matplotlib.pyplot.hist(    
  2. x, bins=10, range=None, normed=False,     
  3. weights=None, cumulative=False, bottom=None,     
  4. histtype=u'bar', align=u'mid', orientation=u'vertical',     
  5. rwidth=None, log=False, color=None, label=None, stacked=False,     
  6. hold=None, **kwargs)    

x : (n,) array or sequence of (n,) arrays

这个参数是指定每个bin(箱子)分布的数据,对应x轴

bins : integer or array_like, optional

这个参数指定bin(箱子)的个数,也就是总共有几条条状图

normed : boolean, optional

If True, the first element of the return tuple will be the counts normalized to form a probability density, i.e.,n/(len(x)`dbin)

这个参数指定密度,也就是每个条状图的占比例比,默认为1

color : color or array_like of colors or None, optional

这个指定条状图的颜色


代码如下:

[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. # -*- coding: utf-8 -*-  
  2. import numpy as np    
  3. import matplotlib.mlab as mlab    
  4. import matplotlib.pyplot as plt    
  5.     
  6.     
  7. # 数据    
  8. mu = 100 # mean of distribution    
  9. sigma = 15 # standard deviation of distribution    
  10. x = mu + sigma * np.random.randn(10000)    
  11.     
  12. num_bins = 50    
  13. # the histogram of the data    
  14. n, bins, patches = plt.hist(x, num_bins, normed=1, facecolor='blue', alpha=0.5)    
  15.   
  16. # add a 'best fit' line    
  17. y = mlab.normpdf(bins, mu, sigma)    
  18. plt.plot(bins, y, 'r--')    
  19. plt.xlabel('Smarts')    
  20. plt.ylabel('Probability')    
  21. plt.title(r'Histogram of IQ: $\mu=100$, $\sigma=15$')    
  22.     
  23. # Tweak spacing to prevent clipping of ylabel    
  24. plt.subplots_adjust(left=0.15)    
  25. plt.show()    
  26. plt.savefig("hist.jpg")  

结果如下:


以下是官方文档的描述:

链接:http://matplotlib.org/api/pyplot_api.html

matplotlib.pyplot.hist(xbins=10range=Nonenormed=Falseweights=Nonecumulative=Falsebottom=Nonehisttype='bar'align='mid',orientation='vertical'rwidth=Nonelog=Falsecolor=Nonelabel=Nonestacked=Falsehold=Nonedata=None**kwargs)

Plot a histogram.

Compute and draw the histogram of x. The return value is a tuple (nbinspatches) or ([n0n1, ...], bins, [patches0patches1,...]) if the input contains multiple data.

Multiple data can be provided via x as a list of datasets of potentially different length ([x0x1, ...]), or as a 2-D ndarray in which each column is a dataset. Note that the ndarray form is transposed relative to the list form.

Masked arrays are not supported at present.

Parameters:

x : (n,) array or sequence of (n,) arrays

Input values, this takes either a single array or a sequency of arrays which are not required to be of the same length

bins : integer or array_like, optional

If an integer is given, bins + 1 bin edges are returned, consistently with numpy.histogram() for numpy version >= 1.3.

Unequally spaced bins are supported if bins is a sequence.

default is 10

range : tuple or None, optional

The lower and upper range of the bins. Lower and upper outliers are ignored. If not provided, range is (x.min(), x.max()). Range has no effect if bins is a sequence.

If bins is a sequence or range is specified, autoscaling is based on the specified bin range instead of the range of x.

Default is None

normed : boolean, optional

If True, the first element of the return tuple will be the counts normalized to form a probability density, i.e.,n/(len(x)`dbin), i.e., the integral of the histogram will sum to 1. If stacked is also True, the sum of the histograms is normalized to 1.

Default is False

weights : (n, ) array_like or None, optional

An array of weights, of the same shape as x. Each value in x only contributes its associated weight towards the bin count (instead of 1). If normed is True, the weights are normalized, so that the integral of the density over the range remains 1.

Default is None

cumulative : boolean, optional

If True, then a histogram is computed where each bin gives the counts in that bin plus all bins for smaller values. The last bin gives the total number of datapoints. If normed is also True then the histogram is normalized such that the last bin equals 1. If cumulative evaluates to less than 0 (e.g., -1), the direction of accumulation is reversed. In this case, if normed is also True, then the histogram is normalized such that the first bin equals 1.

Default is False

bottom : array_like, scalar, or None

Location of the bottom baseline of each bin. If a scalar, the base line for each bin is shifted by the same amount. If an array, each bin is shifted independently and the length of bottom must match the number of bins. If None, defaults to 0.

Default is None

histtype : {‘bar’, ‘barstacked’, ‘step’, ‘stepfilled’}, optional

The type of histogram to draw.

  • ‘bar’ is a traditional bar-type histogram. If multiple data are given the bars are aranged side by side.
  • ‘barstacked’ is a bar-type histogram where multiple data are stacked on top of each other.
  • ‘step’ generates a lineplot that is by default unfilled.
  • ‘stepfilled’ generates a lineplot that is by default filled.

Default is ‘bar’

align : {‘left’, ‘mid’, ‘right’}, optional

Controls how the histogram is plotted.

  • ‘left’: bars are centered on the left bin edges.
  • ‘mid’: bars are centered between the bin edges.
  • ‘right’: bars are centered on the right bin edges.

Default is ‘mid’

orientation : {‘horizontal’, ‘vertical’}, optional

If ‘horizontal’, barh will be used for bar-type histograms and the bottom kwarg will be the left edges.

rwidth : scalar or None, optional

The relative width of the bars as a fraction of the bin width. If None, automatically compute the width.

Ignored if histtype is ‘step’ or ‘stepfilled’.

Default is None

log : boolean, optional

If True, the histogram axis will be set to a log scale. If log is True and x is a 1D array, empty bins will be filtered out and only the non-empty (nbinspatches) will be returned.

Default is False

color : color or array_like of colors or None, optional

Color spec or sequence of color specs, one per dataset. Default (None) uses the standard line color sequence.

Default is None

label : string or None, optional

String, or sequence of strings to match multiple datasets. Bar charts yield multiple patches per dataset, but only the first gets the label, so that the legend command will work as expected.

default is None

stacked : boolean, optional

If True, multiple data are stacked on top of each other If False multiple data are aranged side by side if histtype is ‘bar’ or on top of each other if histtype is ‘step’

Default is False

Returns:

n : array or list of arrays

The values of the histogram bins. See normed and weights for a description of the possible semantics. If input x is an array, then this is an array of length nbins. If input is a sequence arrays [data1, data2,..], then this is a list of arrays with the values of the histograms for each of the arrays in the same order.

bins : array

The edges of the bins. Length nbins + 1 (nbins left edges and right edge of last bin). Always a single array even when multiple data sets are passed in.

patches : list or list of lists

Silent list of individual patches used to create the histogram or list of such list if multiple input datasets.


See also

hist2d
2D histograms

Notes

In addition to the above described arguments, this function can take a data keyword argument. If such a data argument is given, the following arguments are replaced by data[<arg>]:

  • All arguments with the following names: ‘weights’, ‘x’.

Additional kwargs: hold = [True|False] overrides default hold state

Examples

(Source code, png, hires.png, pdf)


python 画图--饼图

这是Python画图系列第三篇--饼图

画饼图用到的方法为:

matplotlib.pyplot.pie()


参数为:

[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. pie(x, explode=None, labels=None,  
  2.     colors=('b''g''r''c''m''y''k''w'),  
  3.     autopct=None, pctdistance=0.6, shadow=False,  
  4.     labeldistance=1.1, startangle=None, radius=None,  
  5.     counterclock=True, wedgeprops=None, textprops=None,  
  6.     center = (00), frame = False )  

参数说明:

x       (每一块)的比例,如果sum(x) > 1会使用sum(x)归一化
labels  (每一块)饼图外侧显示的说明文字
explode (每一块)离开中心距离
startangle  起始绘制角度,默认图是从x轴正方向逆时针画起,如设定=90则从y轴正方向画起
shadow  是否阴影
labeldistance label绘制位置,相对于半径的比例, 如<1则绘制在饼图内侧
autopct 控制饼图内百分比设置,可以使用format字符串或者format function
        '%1.1f'指小数点前后位数(没有用空格补齐)
pctdistance 类似于labeldistance,指定autopct的位置刻度
radius  控制饼图半径

返回值:
如果没有设置autopct,返回(patches, texts)
如果设置autopct,返回(patches, texts, autotexts)

patches -- list --matplotlib.patches.Wedge对象

texts autotexts -- matplotlib.text.Text对象


下面是一个简单的示例:

[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. # -*- coding: utf-8 -*-  
  2. import numpy as np    
  3. import matplotlib.mlab as mlab    
  4. import matplotlib.pyplot as plt    
  5. labels=['China','Swiss','USA','UK','Laos','Spain']  
  6. X=[222,42,455,664,454,334]    
  7.   
  8. fig = plt.figure()  
  9. plt.pie(X,labels=labels,autopct='%1.2f%%'#画饼图(数据,数据对应的标签,百分数保留两位小数点)  
  10. plt.title("Pie chart")  
  11.     
  12.   
  13. plt.show()    
  14. plt.savefig("PieChart.jpg")  

下面是结果:



下面是另一个示例:

[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. # -*- coding: utf-8 -*-  
  2. import numpy as np  
  3. import matplotlib.pyplot as plt  
  4. import matplotlib as mpl  
  5.   
  6. def draw_pie(labels,quants):  
  7.     # make a square figure  
  8.     plt.figure(1, figsize=(6,6))  
  9.     # For China, make the piece explode a bit  
  10.     expl = [0,0.1,0,0,0,0,0,0,0,0]   #第二块即China离开圆心0.1  
  11.     # Colors used. Recycle if not enough.  
  12.     colors  = ["blue","red","coral","green","yellow","orange"]  #设置颜色(循环显示)  
  13.     # Pie Plot  
  14.     # autopct: format of "percent" string;百分数格式  
  15.     plt.pie(quants, explode=expl, colors=colors, labels=labels, autopct='%1.1f%%',pctdistance=0.8, shadow=True)  
  16.     plt.title('Top 10 GDP Countries', bbox={'facecolor':'0.8''pad':5})  
  17.     plt.show()  
  18.     plt.savefig("pie.jpg")  
  19.     plt.close()  
  20.   
  21. # quants: GDP  
  22.   
  23. # labels: country name  
  24.   
  25. labels   = ['USA''China''India''Japan''Germany''Russia''Brazil''UK''France''Italy']  
  26.   
  27. quants   = [15094025.011299967.04457784.04440376.03099080.02383402.02293954.02260803.02217900.01846950.0]  
  28.   
  29. draw_pie(labels,quants)  



官方文档:

链接:http://matplotlib.org/api/pyplot_api.html


matplotlib.pyplot.pie(xexplode=Nonelabels=Nonecolors=Noneautopct=Nonepctdistance=0.6shadow=Falselabeldistance=1.1startangle=None,radius=Nonecounterclock=Truewedgeprops=Nonetextprops=Nonecenter=(00)frame=Falsehold=Nonedata=None)

Plot a pie chart.

Call signature:

pie(x, explode=None, labels=None,    colors=('b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'),    autopct=None, pctdistance=0.6, shadow=False,    labeldistance=1.1, startangle=None, radius=None,    counterclock=True, wedgeprops=None, textprops=None,    center = (0, 0), frame = False )

Make a pie chart of array x. The fractional area of each wedge is given by x/sum(x). If sum(x) <= 1, then the values of x give the fractional area directly and the array will not be normalized. The wedges are plotted counterclockwise, by default starting from the x-axis.

Keyword arguments:

explode: [ None | len(x) sequence ]
If not None, is a len(x) array which specifies the fraction of the radius with which to offset each wedge.
colors: [ None | color sequence ]
A sequence of matplotlib color args through which the pie chart will cycle.
labels: [ None | len(x) sequence of strings ]
A sequence of strings providing the labels for each wedge
autopct: [ None | format string | format function ]
If not None, is a string or function used to label the wedges with their numeric value. The label will be placed inside the wedge. If it is a format string, the label will be fmt%pct. If it is a function, it will be called.
pctdistance: scalar
The ratio between the center of each pie slice and the start of the text generated by autopct. Ignored if autopct is None; default is 0.6.
labeldistance: scalar
The radial distance at which the pie labels are drawn
shadow: [ False | True ]
Draw a shadow beneath the pie.
startangle: [ None | Offset angle ]
If not None, rotates the start of the pie chart by angle degrees counterclockwise from the x-axis.

radius: [ None | scalar ] The radius of the pie, if radius is None it will be set to 1.

counterclock: [ False | True ]
Specify fractions direction, clockwise or counterclockwise.
wedgeprops: [ None | dict of key value pairs ]
Dict of arguments passed to the wedge objects making the pie. For example, you can pass in wedgeprops = { ‘linewidth’ : 3 } to set the width of the wedge border lines equal to 3. For more details, look at the doc/arguments of the wedge object. By default clip_on=False.
textprops: [ None | dict of key value pairs ]
Dict of arguments to pass to the text objects.

center: [ (0,0) | sequence of 2 scalars ] Center position of the chart.

frame: [ False | True ]
Plot axes frame with the chart.

The pie chart will probably look best if the figure and axes are square, or the Axes aspect is equal. e.g.:

figure(figsize=(8,8))ax = axes([0.1, 0.1, 0.8, 0.8])

or:

axes(aspect=1)
Return value:

If autopct is None, return the tuple (patchestexts):

  • patches is a sequence of matplotlib.patches.Wedge instances
  • texts is a list of the label matplotlib.text.Text instances.

If autopct is not None, return the tuple (patchestextsautotexts), where patches and texts are as above, and autotexts is a list of Textinstances for the numeric labels.

Notes

In addition to the above described arguments, this function can take a data keyword argument. If such a data argument is given, the following arguments are replaced by data[<arg>]:

  • All arguments with the following names: ‘colors’, ‘x’, ‘explode’, ‘labels’.

Additional kwargs: hold = [True|False] overrides default hold state



0 0
原创粉丝点击