bd@atyun.com
Matplotlib是最受欢迎的二维图形库,但有时让你的图变得像你想象中好并不容易。
如何更改图例上的标签名称?如何设置刻度线?如何将刻度更改为对数刻度?如何在我的图中添加注释和箭头?如何在我的图中添加网格线?
本文收集了有关如何自定义Matplotlib图的常见问题和答案。这可以作为快速进行Matplotlib绘图的一个很好的速查表,而不是Matplotlib库的完整介绍。如果你不熟悉此库,请查看官方文档。本文介绍的主题包括图和图的属性,坐标轴,图例,注释和保存图。
首先,请确保导入matplotlib。
import matplotlib.pyplot as plt
在Jupyter Notebook中,你可以在下面加入这一行,这样你就不必每次都想要制作一个图时都调用plt.show()。
%matplotlib inline
还有,如果你不希望<matplotlib.collections.PathCollection at 0x1182bc710>这个烦人的消息出现,只需在你的代码后添加一个分号,如下面的第二张图所示。
加分号之前:
之后:
问:如何增加图的尺寸?
很多时候,默认大小太小。你可以添加参数figsize并以英寸为单位指定宽度和高度,如下所示。
plt.figure(figsize =(20,10))
问:什么是子图?如何创建和操作子图?
子图是一个图中一组较小的坐标轴。下面是2 x 2形式的四个子图的示例。
这些子图是使用下面的代码创建的。我们调用plt.subplot
并指定三个数字。它们指的你需要的行数,列数和子图号。
for i in range (1, 5): plt.subplot(2, 2, i) plt.text(0.5,0.5, str((2, 2, i)), ha=’center’, fontsize = 10) plt.tight_layout()
在上面的子图中,图中的文本引用排序了三个数字。子图编号的顺序是从左上角按行,从数字1开始。例如,左上图是子图编号1,右上图是子图编号2,左下图是子图编号3,右下图是4号子图。
请注意,你必须专门调用plt.subplot(2, 2, 1)以激活该子图。
问:我的子图排列看起来不太好。我如何解决它?
这是一个你的子图太挤的例子。我们可以通过调用plt.tight_layout()它来修理它。它清理子图之间的边距以获得更清晰的外观。
调用之前
之后
问:。如何在我的图中添加网格线?
plt.grid(True)
问:如何更改线条颜色、宽度或样式?
你可以传入参数color,linewidth和linestyle。
plt.plot(x,y,color ='green',linewidth = 2,linestyle =“ - ”)
以下是你可以设置的一些linestyle选项。
问:如何更改标记样式或颜色?
你可以传递参数marker和color,如下所示。
plt.scatter(x,y,marker ='o',color ='red')
以下是你可以根据自己的喜好设置marker选项。
问:如何更改线条的透明度?
将alpha参数传递入你的图。alpha的设置范围为0到1,其中0表示完全透明,1表示不透明。
plt.plot(x,y,alpha = 0.1)
下图说明了在alpha为0.9、0.5和0.1时透明度的情况。
问:如何在我的图中添加图例?
如果图例未自动显示在图表上,则可以使用以下代码显示图例。
plt.legend()
问:如何更改图例出现位置?
你可以选择将upper right、upper left、lower left、lower right、right、center left、center right、lower center、upper center和center传递给loc参数。
plt.legend(loc ='right right');
问:如何更改图例上的标签名称?
选项1:
假设你有十个图例项,而你只想更改第一个图例项的标签。将图例保存到变量L后,你可以使用L.get_text()[0]调用图例的第一项,并手动将文本设置为您想要的内容。在下面的示例中,我将我的图例设置为’line123’。
L = plt.legend() L.get_texts()[0] .set_text('line123')
选项2:
或者,你可以创建标签名称列表,并将图例标签设置为你创建的列表。
mylabels = ['happy', 'sad', 'nervous', 'angry', 'neutral'] plt.legend(labels = my_labels)
问:如何更改图例的大小?
要设置该特定图的图例大小,可以传入fontsize参数。
plt.legend(fontsize = 10);
或者,你也可以不使用数字,如:
plt.legend(fontsize ='x-large');
问:如何命名我的x和y轴标签?如何更改字体大小?
根据你要使用的轴,你可以调用“ylabel”或“xlabel”,如下所示。第一项是轴所需的名称。要设置字体大小,需要插入fontsize参数,如下所示。
plt.ylabel('Income', fontsize = 15) #for y label plt.xlabel('Age', fontsize = 15) #for x label
问:如何设置刻度线?
第一个参数是你要设置刻度线的位置,第二个参数是刻度线旁边的标签。
plt.yticks([0,2,4,6,7,10],[“0”,“2B”,“4B”,“8B”,“10B”]) plt.xticks([0,1,2] ,3,4,5],[“0”,“1oz”,“2oz”,“3oz”,“4oz”])
问:如何设置坐标轴的范围?
plt.ylim(-1.0,1.0) #for y axis plt.xlim(0, 50) #for x axis
问:如何将刻度更改为对数刻度?
plt.yscale(“log”) #for y axis plt.xsclae("log") #for x axis
问:如何在我的图中添加注释和箭头?
我们可以创建注释并指定其要注释的xy参数的坐标。xytext定义标签的坐标。如果我们还想要箭头,我们将需要使用arrowprops来显示箭头。
plt.annotate('sentosa',xy =(5.0,3.5),xytext(4.25,4.0),arrowprops = {'color':'red'})
现在你已根据自己的喜好定制了图,需要进行保存!我调用我的图“plot1”(名字你可以自己起)!这会将图保存到你的工作目录。
plt.savefig( 'plot1.jpg')
如果你的Jupyter Notebook中有大量的图,你的Notebook会变得非常慢,在我参与项目时遇到过这种情况。所以,可以将鼠标悬停在图的左侧,这会出现如下所示的灰色框。双击灰色框,就可以隐藏图,使Jupyter Notebook可以正常运行,同时也方便滚动。
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
要发表评论,您必须先登录。