前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Matplotlib绘制图的常见问题和答案

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

作者头像
AiTechYun
发布2018-10-25 10:15:56
10.5K0
发布2018-10-25 10:15:56
举报
文章被收录于专栏:ATYUN订阅号ATYUN订阅号

编译:yxy

出品:ATYUN订阅号

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

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

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

开始

首先,请确保导入matplotlib。

代码语言:javascript
复制
import matplotlib.pyplot as plt

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

代码语言:javascript
复制
%matplotlib inline

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

加分号之前:

之后:

图和子图

问:如何增加图的尺寸?

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

代码语言:javascript
复制
plt.figure(figsize=(20,10))

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

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

这些子图是使用下面的代码创建的。我们调用plt.subplot并指定三个数字。它们指的你需要的行数,列数和子图号。

代码语言:javascript
复制
for iin range (1,5):
代码语言:javascript
复制
   plt.subplot(2,2, i)
代码语言:javascript
复制
   plt.text(0.5,0.5,str((2,2, i)), ha=’center’, fontsize= 10)
代码语言:javascript
复制
   plt.tight_layout()

在上面的子图中,图中的文本引用排序了三个数字。子图编号的顺序是从左上角按行,从数字1开始。例如,左上图是子图编号1,右上图是子图编号2,左下图是子图编号3,右下图是4号子图。

请注意,你必须专门调用plt.subplot(2, 2, 1)以激活该子图。

问:我的子图排列看起来不太好。我如何解决它?

这是一个你的子图太挤的例子。我们可以通过调用plt.tight_layout()它来修理它。它清理子图之间的边距以获得更清晰的外观。

调用之前

之后

问:。如何在我的图中添加网格线?

代码语言:javascript
复制
plt.grid(True)

风格和属性

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

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

代码语言:javascript
复制
plt.plot(x,y,color='green',linewidth= 2,linestyle=“- ”)

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

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

你可以传递参数marker和color,如下所示。

代码语言:javascript
复制
plt.scatter(x,y,marker='o',color='red')

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

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

将alpha参数传递入你的图。alpha的设置范围为0到1,其中0表示完全透明,1表示不透明。

代码语言:javascript
复制
plt.plot(x,y,alpha= 0.1)

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

图例

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

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

代码语言:javascript
复制
plt.legend()

问:如何更改图例出现位置?

你可以选择将upper right、upper left、lower left、lower right、right、center left、center right、lower center、upper center和center传递给loc参数。

代码语言:javascript
复制
plt.legend(loc='right right');

问:如何更改图例上的标签名称?

选项1:

假设你有十个图例项,而你只想更改第一个图例项的标签。将图例保存到变量L后,你可以使用L.get_text()[0]调用图例的第一项,并手动将文本设置为您想要的内容。在下面的示例中,我将我的图例设置为’line123’。

代码语言:javascript
复制
L= plt.legend()
代码语言:javascript
复制
L.get_texts()[0] .set_text('line123')

选项2:

或者,你可以创建标签名称列表,并将图例标签设置为你创建的列表。

代码语言:javascript
复制
mylabels= ['happy','sad','nervous','angry','neutral']
代码语言:javascript
复制
plt.legend(labels= my_labels)

问:如何更改图例的大小?

要设置该特定图的图例大小,可以传入fontsize参数。

代码语言:javascript
复制
plt.legend(fontsize= 10);

或者,你也可以不使用数字,如:

代码语言:javascript
复制
plt.legend(fontsize='x-large');

坐标轴

问:如何命名我的x和y轴标签?如何更改字体大小?

根据你要使用的轴,你可以调用“ylabel”或“xlabel”,如下所示。第一项是轴所需的名称。要设置字体大小,需要插入fontsize参数,如下所示。

代码语言:javascript
复制
plt.ylabel('Income', fontsize= 15)#for y label
代码语言:javascript
复制
plt.xlabel('Age', fontsize= 15)#for x label

问:如何设置刻度线?

第一个参数是你要设置刻度线的位置,第二个参数是刻度线旁边的标签。

代码语言:javascript
复制
plt.yticks([0,2,4,6,7,10],[“0”,“2B”,“4B”,“8B”,“10B”])
代码语言:javascript
复制
plt.xticks([0,1,2] ,3,4,5],[“0”,“1oz”,“2oz”,“3oz”,“4oz”])

问:如何设置坐标轴的范围?

代码语言:javascript
复制
plt.ylim(-1.0,1.0)#for y axis
代码语言:javascript
复制
plt.xlim(0,50)#for x axis

问:如何将刻度更改为对数刻度?

代码语言:javascript
复制
plt.yscale(“log”)#for y axis
代码语言:javascript
复制
plt.xsclae("log")#for x axis

注释

问:如何在我的图中添加注释和箭头?

我们可以创建注释并指定其要注释的xy参数的坐标。xytext定义标签的坐标。如果我们还想要箭头,我们将需要使用arrowprops来显示箭头。

代码语言:javascript
复制
plt.annotate('sentosa',xy=(5.0,3.5),xytext(4.25,4.0),arrowprops= {'color':'red'})

保存图

现在你已根据自己的喜好定制了图,需要进行保存!我调用我的图“plot1”(名字你可以自己起)!这会将图保存到你的工作目录。

代码语言:javascript
复制
plt.savefig('plot1.jpg')

注意

如果你的Jupyter Notebook中有大量的图,你的Notebook会变得非常慢,在我参与项目时遇到过这种情况。所以,可以将鼠标悬停在图的左侧,这会出现如下所示的灰色框。双击灰色框,就可以隐藏图,使Jupyter Notebook可以正常运行,同时也方便滚动。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ATYUN订阅号 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开始
  • 图和子图
  • 风格和属性
  • 图例
  • 坐标轴
  • 注释
  • 保存图
  • 注意
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档