首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >matplotlib并排图形

matplotlib并排图形
EN

Stack Overflow用户
提问于 2014-05-30 19:18:38
回答 1查看 1.5K关注 0票数 2

我试着把两个散点图并排放在一个数字上。我还使用prettyplotlib来使图形看起来更好看一些。这是代码

代码语言:javascript
复制
fig, ax = ppl.subplots(ncols=2,nrows=1,figsize=(14,6))
for each in ['skimmer','dos','webapp','losstheft','espionage','crimeware','misuse','pos']:
    ypos = df[df['pattern']==each]['ypos_m']
    xpos = df[df['pattern']==each]['xpos_m']
    ax[0] = ppl.scatter(ypos,xpos,label=each)
plt.title("Multi-dimensional Scaling: Manhattan")

for each in ['skimmer','dos','webapp','losstheft','espionage','crimeware','misuse','pos']:
    ypos = df[df['pattern']==each]['ypos_e']
    xpos = df[df['pattern']==each]['xpos_e']
    ax[1] = ppl.scatter(ypos,xpos,label=each)
plt.title("Multi-dimensional Scaling: Euclidean")
plt.show()

当代码运行时,我不会收到任何错误,但是我最终得到的是一行和两个图。一个图是完全空的,根本不使用prettyplotlib的样式。右边的图形中似乎有我的两个零散的情节。

我知道ppl.subplots正在返回一个matplotlib.figure.Figure和一个由两个matplotlib.axes.AxesSubplot组成的numpy数组。但我也承认我不太明白斧头和分图是如何工作的。希望这只是个简单的错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-30 19:50:30

我认为ax[0] = ppl.scatter(ypos,xpos,label=each)应该是ax[0].scatter(ypos,xpos,label=each)ax[1] = ppl.scatter(ypos,xpos,label=each)应该是ax[1].scatter(ypos,xpos,label=each),改变它们,看看你的问题是否解决了。

我确信问题是:您正在调用ppl.scatter(...),它将尝试绘制当前轴,这是您生成的两个轴的第一个轴(它是左边的)。

另外,您可能会发现,最终,ax列表包含两个matplotlib.collections.PathCollections,bot两个axis,正如您可能预期的那样。

由于上面的解决方案消除了prettyplot的微妙之处,我们将使用另一种解决方案,即通过添加以下内容来改变当前的工作轴:

代码语言:javascript
复制
plt.sca(ax[0_or_1])

ppl.scatter()之前,在每个循环中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23961953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档