1.首先我们要知道我们用哪些库来画图?matplotlibPython中最基础的库是matplotlib,它是最基础的Python可视化库。一般Python数据都是从matplotlibVisualize开始,然后开始纵横展开。Seaborn是一个基于matplotlib的高级可视化效果库。它主要针对数据挖掘和机器学习中的变量特征选择。seaborn可以使用短代码绘制描述更多维度数据的可视化。其他库包括Bokeh(用于浏览器端交互式可视化的库,使分析师能够与数据进行交互);Mapbox(处理地理数据引擎的更强的可视化工具库)等。本文主要使用matplotlib进行案例分析。第一步:确定问题。选择一个图形业务可能比较复杂,但是拆分之后,我们需要弄清楚我们具体要通过图形来表达什么问题。分析思维的训练可以学习《麦肯锡方法》和《金字塔原理》中的方法。这是网上关于图表类型选择的总结。在Python中,我们可以归纳出以下四种基本的可视化元素来展示图形:点:散点图二维数据,适用于简单的二维关系;line:线图二维数据,适用于时间序列;columnar:条形图二维数据,适用于类别统计;color:heatmap适合显示三维;数据之间存在分布、构成、比较、联系和变化趋势等关系。对应不同的关系,选择相应的图形进行显示。第二步:转换数据,应用函数数据分析和建模中的许多编程工作都基于数据准备:加载、清理、转换和重塑。我们的可视化步骤还需要对数据进行整理,转换成我们需要的格式,然后应用可视化的方法来完成绘制。以下是一些常用的数据转换方式:merge:merge、concat、combine_frist(类似于数据库中的fullouterjoin)reshape:reshape;axisrotation:pivot(类似excelpivottable)deduplication:drop_duplicatesmapping:mapFillreplacement:fillna,replacerenametheaxisindex:rename将分类变量转换为‘虚拟变量矩阵’的get_dummies函数,并限制a的值df中某列数据等。函数根据第一步选择的图形在Python中找到对应的函数。第三步:参数设置,一目了然原始图形绘制完成后,我们可以修改颜色(color)、线型(linestyle)、标记(maker)或其他图表装饰项标题(Title)、坐标轴标签(xlabel,ylabel)),坐标轴刻度(set_xticks),和图例(legend)等,使图形更直观。第三步是在第二步的基础上,为了让图形更清晰,做修改工作。具体参数可以在绘图函数中找到。2.VisualMapping基础MatplotlibMappingBasics#Importpackageimportnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltFigureandSubplotmatplotlib的图形位于Figure(画布)中,Subplot创建图像空间。如果无法绘制图形,则必须使用add_subplot创建一个或多个子图。figsize可以指定图像大小。#Createcanvasfig=plt.figure()#Createsubplot,221表示这是表格中的第一个图像,2行2列。ax1=fig.add_subplot(221)#不过现在我更习惯用下面的方法创建画布和图片,2,2表示这是一个2*2的画布,可以放4张图片fig,axes=plt.subplots(2,2,sharex=True,sharey=True)#plt.subplot的sharex和sharey参数可以指定所有子图使用相同的x和y轴比例。可以使用图的subplots_adjust方法调整间距。subplots_adjust(left=None,bottom=None,right=None,top=None,wspace=None,hspace=None)colorcolor,markmarker,andlinestylematplotlib的plot函数接受一组X和Y坐标,和也可以接受颜色和线型的字符串缩写:**'g--',表示颜色为绿色,线型为'--'虚线。**也可以使用参数显式指定。折线图也可以用标记来标记,以突出显示数据点的位置。标记也可以放在格式字符串中,但标记类型和线条样式必须放在颜色之后。plt.plot(np.random.randn(30),color='g',linestyle='--',marker='o')[]scale,labelandlegendplt的xlim、xticks和xtickslabels方法分别控制图表的范围和刻度位置以及刻度标签。当不带参数调用方法时,返回当前参数值;当使用参数调用方法时,设置参数值。plt.plot(np.random.randn(30),color='g',linestyle='--',marker='o')plt.xlim()#不带参数调用,显示当前参数;#canbe尝试用其他两种方法替换xlim(-1.4500000000000002,30.45)imgplt.plot(np.random.randn(30),color='g',linestyle='--',marker='o')plt.xlim([0,15])#横轴刻度变为0-15(0,15)设置标题、轴标签、刻度和刻度标签fig=plt.figure();ax=fig.add_subplot(1,1,1)ax.plot(np.random.randn(1000).cumsum())ticks=ax.set_xticks([0,250,500,750,1000])#设置刻度值labels=ax.set_xticklabels(['one','two','three','four','five'])#设置比例标签ax.set_title('MyfirstPlot')#设置标题ax.set_xlabel('Stage')#SettheaxislabelText(0.5,0,'Stage')添加图例图例图例是识别图标元素的另一个重要工具。添加subplot时可以传入label参数。fig=plt.figure(figsize=(12,5));ax=fig.add_subplot(111)ax.plot(np.random.randn(1000).cumsum(),'k',label='one')#引入label参数,定义标签名称ax.plot(np.random.randn(1000).cumsum(),'k--',label='two')ax.plot(np.random.randn(1000).cumsum(),'k.',label='three')#创建完图后,只需要调用legend参数就可以调出label了。ax.legend(loc='best')#如果要求不是很严格,建议使用loc='best'参数,让它自己选择最好的位置注意它不是一个标准的图表对象,我们也可以自定义并添加一些文本注释或箭头。可以通过文本、箭头和注释等功能添加注释。text函数可以在指定的x,y坐标位置绘制文本,也可以执行自定义格式plt.plot(np.random.randn(1000).cumsum())plt.text(600,10,'test',family='monospace',fontsize=10)#默认环境下无法正常显示中文注释,需要修改配置文件,#支持中文字体。具体步骤请自行搜索。将图形保存到文件使用plt.savefig将当前图形保存到文件。例如,要将图表保存为png文件,可执行文件类型基于扩展名。其他参数包括:fname:包含文件路径的字符串,扩展名指定文件类型dpi:分辨率,默认100facecolor,edgcolor图片背景色,默认'w'whiteformat:显示设置文件格式('png','pdf','svg','ps','jpg'等)bbox_inches:图表中需要保留的部分。如果设置为“tight”,则会尝试剪掉图片周围的空白部分plt.savefig('./plot.jpg')#将图片保存为plotname的jpg格式图片3,在Pandas中Matplotlib绘图matplotlib是最基本的绘图功能,也是一个比较底层的工具。组装图表需要分别调用每个基本组件。Pandas中有很多基于matplotlib的高级绘图方法。原本需要多行代码的图表,使用pandas只需要几行代码就可以搞定。我们使用pandas中的绘图包。importmatplotlib.pyplotaspltlinechartSeries和DataFrame都有plot方法来生成各种图表。默认情况下,它们生成折线图。s=pd.Series(np.random.randn(10).cumsum(),index=np.arange(0,100,10))s.plot()#Series对象的index索引会传给matplotlib作图x轴。df=pd.DataFrame(np.random.randn(10,4).cumsum(0),columns=['A','B','C','D'])df.plot()#plot会自动为不同的变量改变颜色并添加图例Series.plot方法的参数label:图表样式使用的label:stylestring,'g--'alpha:填充图像的不透明度(0-1)kind:图表类型(bar,line,hist,kde,etc.)xticks:设置x轴刻度值yticks:设置y-axisscalevaluexlim,ylim:设置轴范围,[0,10]grid:显示轴网格线,默认关闭rot:旋转刻度标签use_index:使用物体的索引作为刻度标签logy:使用对数刻度Y轴DataFrame.plot方法的参数DataFrame除了Series中的参数外,还有一些独特的选项。subplots:将每个DataFrame列绘制成一个单独的子图sharex,sharey:共享x,y轴figsize:控制图像大小title:图像标题legend:添加图例,默认显示sort_columns:按字母顺序绘制列,使用当前顺序defaultHistogram在生成折线图的代码中加入kind='bar'或kind='barh',生成直方图或水平直方图。图,axes=plt.subplots(2,1)data=pd.Series(np.random.rand(10),index=list('abcdefghij'))data.plot(kind='bar',ax=axes[0],rot=0,alpha=0.3)data.plot(kind='barh',ax=axes[1],grid=True)直方图有个很好用的方法:使用value_counts以图形方式显示Series或DF中每个值出现的频率。比如df.value_counts().plot(kind='bar')Python可视化的基本语法就到这里,其他图形的绘制方法类似。关键是要按照思考、选择、应用三步走的思路。大量的练习可以让你更加熟练。