使用Matplotlib绘制图的常见问题和答案

2018年10月16日 由 yuxiangyu 发表 914199 0
自定义Matplotlib图的常见问题和答案

Matplotlib是最受欢迎的二维图形库,但有时让你的图变得像你想象中好并不容易。


如何更改图例上的标签名称?如何设置刻度线?如何将刻度更改为对数刻度?如何在我的图中添加注释和箭头?如何在我的图中添加网格线?


本文收集了有关如何自定义Matplotlib图的常见问题和答案。这可以作为快速进行Matplotlib绘图的一个很好的速查表,而不是Matplotlib库的完整介绍。如果你不熟悉此库,请查看官方文档。本文介绍的主题包括图和图的属性,坐标轴,图例,注释和保存图。



开始


首先,请确保导入matplotlib。



import matplotlib.pyplot as plt

在Jupyter Notebook中,你可以在下面加入这一行,这样你就不必每次都想要制作一个图时都调用plt.show()。
%matplotlib inline

还有,如果你不希望这个烦人的消息出现,只需在你的代码后添加一个分号,如下面的第二张图所示。

加分号之前:

自定义Matplotlib图的常见问题和答案

之后:

自定义Matplotlib图的常见问题和答案

图和子图


问:如何增加图的尺寸?


很多时候,默认大小太小。你可以添加参数figsize并以英寸为单位指定宽度和高度,如下所示。



plt.figure(figsize =(20,10))

问:什么是子图?如何创建和操作子图?

子图是一个图中一组较小的坐标轴。下面是2 x 2形式的四个子图的示例。

自定义Matplotlib图的常见问题和答案

这些子图是使用下面的代码创建的。我们调用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()它来修理它。它清理子图之间的边距以获得更清晰的外观。

调用之前

自定义Matplotlib图的常见问题和答案

之后

自定义Matplotlib图的常见问题和答案

问:。如何在我的图中添加网格线?
plt.grid(True)

风格和属性


问:如何更改线条颜色、宽度或样式?


你可以传入参数color,linewidth和linestyle。



plt.plot(x,y,color ='green',linewidth = 2,linestyle =“ - ”)

以下是你可以设置的一些linestyle选项。

自定义Matplotlib图的常见问题和答案

问:如何更改标记样式或颜色?

你可以传递参数marker和color,如下所示。
plt.scatter(x,y,marker ='o',color ='red')

以下是你可以根据自己的喜好设置marker选项。

自定义Matplotlib图的常见问题和答案

问:如何更改线条的透明度?

将alpha参数传递入你的图。alpha的设置范围为0到1,其中0表示完全透明,1表示不透明。
plt.plot(x,y,alpha = 0.1)

下图说明了在alpha为0.9、0.5和0.1时透明度的情况。

自定义Matplotlib图的常见问题和答案

图例


问:如何在我的图中添加图例?


如果图例未自动显示在图表上,则可以使用以下代码显示图例。



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可以正常运行,同时也方便滚动。


自定义Matplotlib图的常见问题和答案
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
写评论取消
回复取消