关于matplotlib:Matplotlib

Matplotlib1.什么是MatplotlibMatplotlib是一个弱小的Python绘图库,次要用于数据可视化。2.Matplotlib性能 图表类型丰盛:反对线图、散点图、条形图、直方图、饼图、柱状图、误差线图、箱线图等多种图表类型。高度自定义:用户能够自定义图表的款式,包含色彩、线型、标记、题目、坐标轴标签等。良好的兼容性:与NumPy、Pandas等Python科学计算库兼容,不便解决和可视化数据。交互式绘图:反对交互式绘图,便于用户调整和查看图表。多样化的输入格局:反对PNG、JPG、EPS、SVG、Pdf等多种格局。简单的布局设计:通过GridSpec和Subplot等模块,能够实现简单的图表布局。自定义格调和主题:用户能够创立本人的图表款式和主题。3.Matplotlib特点功能强大:提供了丰盛的绘图性能和自定义选项。灵活性高:反对多种数据类型和构造,易于与其余Python库集成。社区反对弱小:领有宏大的用户社区,提供大量的教程和文档。4.Matplotlib利用场景数据分析:将数据集可视化,帮忙剖析数据,发现数据之间的关系。机器学习:在机器学习我的项目中,将算法的后果可视化,帮忙了解模型的性能和特点。

February 23, 2024 · 1 min · jiezi

关于matplotlib:matplotlibcpp的安装使用

应用miniconda 创立虚拟环境 conda create -n cppmatplot python=3.8下载源码 https://github.com/lava/matplotlib-cpp.git编译 cd matplotlib-cpp mkdir build vim ../CMakelist.txt 增加如下代码 set(Python3_FIND_STRATEGY LOCATION) set(Python3_ROOT_DIR "*/miniconda3/envs/cppmatplot") make -j32 sudo make install应用 https://github.com/jamefrank/cppmatplotlib.git

May 25, 2023 · 1 min · jiezi

关于matplotlib:学习神经网络-绘图matplotlib

1.简略折线图导入matplotlib包中的pyplot函数,重命名为plt创立一个数字列表plt.plot(调用创立的数字列表)plt调用show将绘制的好的折线图显示进去 import matplotlib.pyplot as pltcosts = [1,2,3,4,5,6,3,7,2]plt.plot(costs)plt.ylabel('cost')plt.xlabel('epochs (per 100)')plt.title("Learning rate = ")plt.show()2.校对图形下面因为只对x轴做了定义所以y轴都是不确定性的导致不精确导入matplotlib包中的pyplot函数,重命名为plt创立一个数字列表(1)再创立一个数字列表(2)plt.plot(调用创立的数字列表(1),(2),lienwidth = 数字)plt调用show将绘制的好的折线图显示进去 x = [1, 2, 3, 4, 5]y = [1, 4, 9, 16, 25]plt.plot(x, y, linewidth=5)plt.show() 3.散状图在神经网络中为了描述数据集中不同样本的散布状况,经常要绘制散状图。用scatter()绘制散点图并设置其款式。plt.scatter(x轴的点的地位,y轴的点的地位,s = 数字(散点的大小)) #创立为散点图plt.title(“题目”,fontsize = 数字) #增加题目,并批改题目字体大小plt.xlabel(“横坐标标签”,fontsize = 数字) #增加横坐标标签并批改字体大小plt.ylabel(“纵坐标标签”,fontsize = 数字) #增加纵坐标标签并批改字体大小plt.tick_params(axis = “both”,which = ‘major’,labelsize= 数字) #axis = ‘’设定批改哪个坐标进行批改,both为全副批改,xl为只批改横坐标,y为只批改纵坐标(不设定为默认both),labelsize用于设置刻度线标签的字体大小参数which的值为 ‘major’、’minor’、’both’,别离代表设置主刻度线、副刻度线以及同时设置,默认值为’major’ (主刻度线、副刻度线相似于厘米尺。CM与MM的区别)plt调用show将绘制的好的折线图显示进去上面是单个点的散状图: plt.scatter(2, 4, s=200)plt.title("Square Numbers", fontsize=24)plt.xlabel("Value", fontsize=14)plt.ylabel("Square of Value", fontsize=14)plt.tick_params(axis='both', which='major', labelsize=14)plt.show() 上面是多个点的散状图,并用不同色彩示意其分类不同,用参数c示意对应的色彩值(color),如果是两种数值,那么点就是两种色彩,多种数值,点就是多种色彩。参数c能够是一个序列,如:plt.scatter(a,b,c=['b','r','b','r','b'],s=80)此时c的序列是一个色彩序列,除了上述的简洁写法,还能够应用RGB或RBGA:plt.scatter(a,b,c=['#f00','#0f0','#f00','#0f0','#f00'],s=80) x1 = [1,2,5,3,4,6,7,2,10,12]x2 = [5,12,15,13,14,16,17,12,13,22]c = ['b','b','b','r','b','r','b','b','r','b'] #c = ['#0000ff','#0000ff','#0000ff','#ff0000','#0000ff','#ff0000','#0000ff','#0000ff','#ff0000','#0000ff']plt.scatter(x1,x2,c=c,s=30)plt.show()然而,在数据集中,咱们个别不会设置色彩,因为标签Y自身就是分好类的,这种状况就须要应用cmap参数,cmap=plt.cm.Spectral。留神,plt.cm.Spectral是一个色彩映射集,参数Y的序列中呈现了n个不同的值,而后为每一个值调配一个色彩。 ...

April 21, 2022 · 1 min · jiezi

关于matplotlib:Matplotlib设置颜色形状

plt.plot(x, y, marker='+', color='coral') referencehttps://blog.csdn.net/hesongz...

March 23, 2021 · 1 min · jiezi

关于matplotlib:安利-5-个拍案叫绝的-Matplotlib-骚操作

公众号:Python数据迷信作者:东哥腾飞大家都晓得,Matplotlib是Python的可视化库,性能很强,能够绘制各种图。一些惯例用法前不久分享过Matplotlib官网出品的cheatsheet:Matplotlib官网小抄手册公开,配套可视化代码已打包! 然而!明天咱们不走寻常路,专挑几个贼骚的操作分享下. 1. Span SelectorSpan Selector是Matplotlib中的鼠标小部件,widgets是用于蕴含一些交互性能的python对象。Span Selector能够通过鼠标框选,不便地查看选定区域的最大值和最小值。 上面是代码,首先创立一个根本折线图作为例子。而后,咱们调用SpanSelector办法并应用它来抉择一个区域,而后在该区域中显示最大值和最小值。 import matplotlib.pyplot as pltfrom matplotlib.widgets import SpanSelectordef onselect(xmin, xmax): print(xmin, xmax) return xmin, xmaxfig, ax = plt.subplots()ax.plot([1,2,3,4,5,6,7], [10, 50, 100, 23,15,28,45])span = SpanSelector(ax, onselect, 'horizontal', useblit=True, rectprops=dict(alpha=0.5, facecolor='red')) plt.show()上面是具体操作。 2. Broken BarhBroken的程度条形图是不间断具备间隙的图,它可用于数据值相差很大的状况下,例如,蕴含极其温度范畴的数据集。在这种状况下,Broken的程度条形图十分适合,因为它们能够同时绘制最大和最小范畴。 python模块matplotlib.broken_barh()用于绘制Broken的程度条形图。 import matplotlib.pyplot as plt #Defining the x and y ranges xranges = [(5,5), (20,5),(20,7)] yrange = (2,1) #Plotting the broken bar chart plt.broken_barh(xranges, yrange, facecolors='green') xranges = [(6,2), (17,5),(50,2)] yrange = (15,1) plt.broken_barh(xranges, yrange, facecolors='orange') xranges = [(5,2), (28,5),(40,2)] yrange = (30,1) plt.broken_barh(xranges, yrange, facecolors='red') plt.xlabel('Sales') plt.ylabel('Days of the Month') plt.show() ...

September 29, 2020 · 2 min · jiezi

关于matplotlib:matplotlib-quiver-画风速风向

一个箭头的组成 quiver几个参数的了解quiver([X, Y], U, V, [C], **kw),其中kw可供选择的参数有: units:默认值是width, width/heigth:箭头的宽度是x或者y轴的总长,没错,是总长; dots/inches:箭头的宽度是设置的dpi或者设置的英寸大小,这个影响了width参数,比如说画布大小设为plt.figure(figsize=(144, 72), dpi=10),这个画布占1440*720px,如果quiver设置units="dots",width=5,代表以10像素为根底单位,5倍的宽度也就是画一个箭头它的宽度占50px,那么数据就须要抽样画了,不然会糊在一起; x/y/xy:以x,y,或者xy的平方根为根底的宽度,如果x轴或者y轴坐标设置步长为1,和画布像素大小统一,这样一个像素对应一个x的整数坐标值,那么就能够管制箭头杆的宽度了,箭头杆的根底长度就是根号2px; width:float型,用来管制箭头杆的宽度,我只分明units=dots时宽度的了解,然而对于units=x/y/xy时宽度到底指的是我临时是依照下面的了解; angle:uv/xy,uv箭头的纵横比(axis aspect ratio)为1,所以若U==V,则绘图上箭头的方向与程度轴逆时针呈45度(正向右);xy箭头从(x,y)指向(x + u,y + v),例如,应用它来绘制突变场(gradient field) headwidth:float型,默认3,用来管制箭头三角形底边的半宽,值指的是杆宽的倍数; headlength: float型,默认5,用来管制箭头斜边的长度,值指的是杆宽的倍数,比方4.5指的是杆宽的4.5倍; scale:float型,默认为None,用来控制杆身的长度,值越小,杆身越长,如果为None,则应用matplotlib主动缩放算法,箭头长度单scale_units参数指定 scale_units:如果该值设置为width/heigth,则scale应该设为0.000x的范畴差不多才是想要的后果,如果设置为inches,则和你的dpi以及scale相干,对于plt.figure(figsize=(144, 72),dpi=10) scale=1,scale_units="inches"和scale=0.1,scale_units="x/xy/不写"的画进去的后果是一样的; pivot:tail/mid/middle/tip,默认tail,指的是箭头核心,其实就是从哪里画 样例图 全副代码参考# _*_coding:utf-8_*_import matplotlib.pyplot as pltfrom PIL import Imageimport numpy as npimport osimport sysimport jsonimport h5pyFILLVALUE = -32767def assigncolor(tardataset, mask, colorbar): if tardataset[mask].size > 0: if len(colorbar) >= 4: tardataset[mask] = colorbar else: tardataset[mask] = [colorbar[0], colorbar[1], colorbar[2], 255] return tardataset[mask] def single_drawer(dataset, colorbar, tardataset): #非凡值的解决 nullmask = np.isnan(dataset[:]) | np.isinf(dataset) tardataset[nullmask] = [255, 255, 255, 0] for index in range(0, len(colorbar)): # 获取须要进行判断的值 valuemask = tardataset[:, :] == [-1, -1, -1, -1] # 三维转二维,不便与dataset的mask合并 valuemask = valuemask[:, :, 0] mask = dataset == colorbar[index][0] tardataset[valuemask & mask] = assigncolor(tardataset, valuemask & mask, colorbar[index][1]) return tardatasetdef gradient_drawer(dataset, colorbar, tardataset): # 非凡值的解决 nullmask = np.isnan(dataset[:]) | np.isinf(dataset) tardataset[nullmask] = [255, 255, 255, 0] # 小于最小值 valuemask = tardataset[:, :] == [-1, -1, -1, -1] valuemask = valuemask[:, :, 0] mask = dataset <= colorbar[0][0] tardataset[valuemask & mask] = assigncolor(tardataset, valuemask & mask, colorbar[0][1]) for index in range(0, len(colorbar) - 1): # 获取须要进行判断的值 valuemask = tardataset[:, :] == [-1, -1, -1, -1] if index == 18: print(valuemask.shape) valuemask = valuemask[:, :, 0] mask = (dataset > colorbar[index][0]) & (dataset <= colorbar[index + 1][0]) tempmask = valuemask & mask if tempmask[tempmask == True].size > 0: ratio = (1.0 * (dataset[valuemask & mask] - colorbar[index][0]) / (colorbar[index + 1][0] - colorbar[index][0])).reshape(-1, 1) colorrange = (np.array(colorbar[index + 1][1] - np.array(colorbar[index][1]))).reshape(1, -1) temp = np.dot(ratio, colorrange) + np.array(colorbar[index][1]) if len(colorbar[index][1]) < 4: alphaband = np.ones((temp.shape[0], 1)) alphaband[::] = 255 temp = np.column_stack((temp, alphaband)) tardataset[valuemask & mask] = temp # 大于最大值 valuemask = tardataset[:, :] == [-1, -1, -1, -1] valuemask = valuemask[:, :, 0] mask = dataset > colorbar[-1][0] tardataset[valuemask & mask] = assigncolor(tardataset, valuemask & mask, colorbar[-1][1]) return tardatasetdef drawWindDir(in_file, u_ds, v_ds, dir_file, cb_file): # 读取调色板 gradient_cb = [] single_cb = [] with open(cb_file, "r") as cb_json: cb_data = json.load(cb_json) gradient_cb = cb_data["gradient"] single_cb = cb_data["single"] # 读取风速 h5py_obj = h5py.File(in_file, 'r') u_data = np.array(h5py_obj[u_ds]) v_data = np.array(h5py_obj[v_ds]) sws_data = np.array(h5py_obj["SWS"]) # 获取宽高 uh, uw = np.shape(u_data) vh, vw = np.shape(v_data) # 高低翻转数据 u = np.flip(u_data, 0) v = np.flip(v_data, 0) # 读取风速有效值范畴 sws_valid = h5py_obj["SWS"].attrs['valid range'] # 用风速有效值管制有效值区域提取 valid_mask = (sws_data >= sws_valid[0]) & (sws_data <= sws_valid[1]) # 用u,v向量计算风速 wp = np.empty((uh, uw), dtype=np.float) wp[:, :] = FILLVALUE wp[valid_mask] = np.sqrt(np.power(u[valid_mask] / 100.0, 2) + np.power(v[valid_mask] / 100.0, 2)) # 初始化输入数据集 tardataset = np.ones((uh, uw, 4), dtype=np.int) tardataset[::] = -1 # 去掉single调色板的值 tardataset = single_drawer(sws_data, single_cb, tardataset) # 依据gradient调色板从新赋值 result_data = gradient_drawer(sws_data, gradient_cb, tardataset) # 输入风速的底图 new_image = Image.fromarray(result_data.astype(np.uint8)).convert('RGBA') new_image.save(in_file.replace(".HDF", ".png"), 'png') # 风向的xy坐标,uv向量,1440,720,去除有效值 u_valid = valid_mask X, Y = np.meshgrid(np.arange(0, uw, 1), np.flipud(np.arange(0, uh, 1))) U = u.astype(np.int64) V = v.astype(np.int64) newU = np.zeros((uh, uw)) newV = np.zeros((uh, uw)) newU[u_valid] = U[u_valid] / np.sqrt(np.power(U[u_valid], 2) + np.power(V[u_valid], 2)) newV[u_valid] = V[u_valid] / np.sqrt(np.power(U[u_valid], 2) + np.power(V[u_valid], 2)) # 有效值为nan newU[newU == 0] = np.nan newV[newV == 0] = np.nan # 创立画布 fig1 = plt.figure(figsize=(uw, uh), dpi=1) ax1 = fig1.add_subplot(111) # 去掉坐标轴,去掉两边空白,管制输入的xy轴范畴 plt.axis('off') plt.subplots_adjust(top=1, bottom=0, left=0, right=1, hspace=0, wspace=0) plt.ylim(0, uh) plt.xlim(0, uw) # 栅格抽样 i = 10 Q = ax1.quiver(X[::i, ::i], Y[::i, ::i], newU[::i, ::i], newV[::i, ::i], scale=0.1, width=1, units="xy", angles='uv', headwidth=3.5, headlength=4, pivot="mid") ax1.scatter(X[::i, ::i], Y[::i, ::i], color='r', s=30) plt.show() fig1.savefig(dir_file, transparent=True) plt.close()def mergeDirSpd(spd_img, dir_img, out_img): backimage = Image.open(spd_img) frontimage = Image.open(dir_img) # 临时没有思考分辨率不统一状况 outimage = Image.alpha_composite(backimage, frontimage) outimage.save(out_img)if __name__ == "__main__": in_path = sys.argv[1] ds = sys.argv[2] cb_file = sys.argv[3] if os.path.isdir(in_path): for w_root, w_dirs, dir_files in os.walk(in_path): for one_file in dir_files: if '.HDF' in one_file and "SWS" in one_file: in_file = os.path.join(w_root, one_file) spd_img = in_file.replace(".HDF", ".png") dir_img = in_file.replace(".HDF", "_dir.png") out_img = in_file.replace(".HDF", "_dp.png") u_ds = "wind_vel_u" v_ds = "wind_vel_v" drawWindDir(in_file, u_ds, v_ds, dir_img, cb_file) mergeDirSpd(spd_img, dir_img, out_img) elif os.path.isfile(in_path): in_file = in_path spd_img = in_file.replace(".HDF", ".png") dir_img = in_file.replace(".HDF", "_dir.png") out_img = in_file.replace(".HDF", "_dp.png") u_ds = "dwind_vel_u" v_ds = "wind_vel_v" drawWindDir(in_file, u_ds, v_ds, dir_img, cb_file) mergeDirSpd(spd_img, dir_img, out_img)

August 14, 2020 · 4 min · jiezi

关于matplotlib:Matplotlib-绘图秘籍翻译完成

原文:Matplotlib Plotting Cookbook协定:CC BY-NC-SA 4.0 欢送任何人参加和欠缺:一个人能够走的很快,然而一群人却能够走的更远。 在线浏览ApacheCN 面试求职交换群 724187166ApacheCN 学习资源目录Matplotlib 绘图秘籍零、前言一、第一步二、自定义色彩和款式三、解决标注四、解决图形五、文件输入六、解决地图七、解决 3D 图形八、用户界面奉献指南本我的项目须要校对,欢送大家提交 Pull Request。 请您怯懦地去翻译和改良翻译。尽管咱们谋求卓越,但咱们并不要求您做到美中不足,因而请不要放心因为翻译上犯错——在大部分状况下,咱们的服务器曾经记录所有的翻译,因而您不用放心会因为您的失误受到无法挽回的毁坏。(改编自维基百科)联系方式负责人飞龙: 562826179其余在咱们的 apachecn/apachecn-ds-zh github 上提 issue.发邮件到 Email: apachecn@163.com.在咱们的 组织学习交换群 中分割群主/管理员即可.资助咱们通过平台自带的打赏性能,或点击这里。

August 1, 2020 · 1 min · jiezi

关于matplotlib:Matplotlib-30-秘籍翻译完成

原文:Matplotlib 3.0 Cookbook协定:CC BY-NC-SA 4.0 欢送任何人参加和欠缺:一个人能够走的很快,然而一群人却能够走的更远。 在线浏览ApacheCN 面试求职交换群 724187166ApacheCN 学习资源目录Matplotlib 3.0 秘籍零、前言一、Matplotlib 的分析二、根本绘图入门三、绘制多个图表和子图四、开发可视化来进步公布品质五、应用高级性能的绘图六、嵌入文本和表达式七、以不同格局保留图形八、开发交互式绘图九、在图形用户界面中嵌入绘图十、应用 mplot3d 工具包绘制 3D 图形十一、应用axisartist工具包十二、应用axes_grid1工具包十三、应用 Cartopy Toolkit 绘制天文地图十四、应用 Seaborn 工具包的探索性数据分析奉献指南本我的项目须要校对,欢送大家提交 Pull Request。 请您怯懦地去翻译和改良翻译。尽管咱们谋求卓越,但咱们并不要求您做到美中不足,因而请不要放心因为翻译上犯错——在大部分状况下,咱们的服务器曾经记录所有的翻译,因而您不用放心会因为您的失误受到无法挽回的毁坏。(改编自维基百科)联系方式负责人飞龙: 562826179其余在咱们的 apachecn/apachecn-ds-zh github 上提 issue.发邮件到 Email: apachecn@163.com.在咱们的 组织学习交换群 中分割群主/管理员即可.资助咱们通过平台自带的打赏性能,或点击这里。

July 30, 2020 · 1 min · jiezi