相关疑难解决方法(0)

在轴外移动matplotlib图例会使其被图框切断

我熟悉以下问题:

Matplotlib savefig与情节外的传奇

如何将传说从情节中删除

看起来这些问题的答案很有可能摆脱轴的精确收缩,以便传说适合.

然而,收缩轴并不是一个理想的解决方案,因为它使数据变得更小,使得它实际上更难以解释; 特别是当它的复杂和有很多事情发生时...因此需要一个大的传奇

文档中复杂图例的示例演示了对此的需求,因为其图中的图例实际上完全遮盖了多个数据点.

http://matplotlib.sourceforge.net/users/legend_guide.html#legend-of-complex-plots

我希望能够做的是动态扩展图框的大小以适应不断扩大的图形图例.

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-2*np.pi, 2*np.pi, 0.1)
fig = plt.figure(1)
ax = fig.add_subplot(111)
ax.plot(x, np.sin(x), label='Sine')
ax.plot(x, np.cos(x), label='Cosine')
ax.plot(x, np.arctan(x), label='Inverse tan')
lgd = ax.legend(loc=9, bbox_to_anchor=(0.5,0))
ax.grid('on')
Run Code Online (Sandbox Code Playgroud)

请注意最终标签"逆棕褐色"实际上是如何在图框之外(看起来严重截止 - 而不是出版质量!) 在此输入图像描述

最后,我被告知这是R和LaTeX中的正常行为,所以我有点困惑为什么在python中这么难...有历史原因吗?Matlab在这件事上同样很差吗?

我在pastebin http://pastebin.com/grVjc007上有这个代码的(仅略微)更长版本

python matplotlib legend

205
推荐指数
3
解决办法
13万
查看次数

将seaborn情节传奇移到另一个位置?

我正在使用factorplot(kind="bar")seaborn.

情节很好,除了传说是错位的:右边太多,文字从情节的阴影区域出来.

如何让seaborn将传奇置于其他地方,例如左上角而不是右中角?

python seaborn

38
推荐指数
5
解决办法
7万
查看次数

在seaborn tsplot中将图例移到图外

我想创建一个时间序列图,使用seaborn.tsplot类似于此示例中的tsplot文档,但图例移到右侧,图中.

例

基于seaborn的timeseries.py中的 339-340行,看起来seaborn.tsplot目前不允许直接控制图例放置:

    if legend:
        ax.legend(loc=0, title=legend_name)
Run Code Online (Sandbox Code Playgroud)

是否有matplotlib解决方法?我正在使用seaborn 0.6-dev.

matplotlib seaborn

37
推荐指数
5
解决办法
4万
查看次数

Matplotlib savefig与情节外的传奇

阅读下面的文章,我设法将一个传奇放在外面.

码:

import matplotlib.pyplot as pyplot

x = [0, 1, 2, 3, 4]
y = [xx*xx for xx in x]

fig = pyplot.figure()
ax  = fig.add_subplot(111)

box = ax.get_position()
ax.set_position([box.x0, box.y0, box.width*0.8, box.height])

ax.plot(x, y)
leg = ax.legend(['abc'], loc = 'center left', bbox_to_anchor = (1.0, 0.5))
#pyplot.show()

fig.savefig('aaa.png', bbox_inches='tight')
Run Code Online (Sandbox Code Playgroud)

pyplot.show()显示正确的情节,外面有一个图例.但是当我将其保存为文件时fig.savefig(),图例会被截断.

一些谷歌搜索显示我作为变通方法添加这样bbox_extra_artists=[leg.legendPatch]bbox_extra_artists=[leg]savefig(),但既不工作.

这样做的正确方法是什么?Matplotlib版本为0.99.3.

谢谢.

python matplotlib legend

34
推荐指数
3
解决办法
4万
查看次数

如何用熊猫把传说放在情节之外

怎么可能把传说放在情节之外?

import pandas as pd
import matplotlib.pyplot as plt
a = {'Test1': {1: 21867186, 4: 20145576, 10: 18018537},
    'Test2': {1: 23256313, 4: 21668216, 10: 19795367}}

d = pd.DataFrame(a).T
#print d

f = plt.figure()

plt.title('Title here!', color='black')
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
d.plot(kind='bar', ax=f.gca())
plt.show()
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas

33
推荐指数
2
解决办法
6万
查看次数

我的matplotlib.pyplot传奇正在被切断

我正在尝试使用matplotlib创建一个带有图例的图表.我可以看到正在创建绘图,但图像边界不允许显示整个图例.

lines = []
ax = plt.subplot(111)
for filename in args:
    lines.append(plt.plot(y_axis, x_axis, colors[colorcycle], linestyle='steps-pre', label=filename))
ax.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)
Run Code Online (Sandbox Code Playgroud)

这会产生: 在此输入图像描述

python matplotlib

32
推荐指数
4
解决办法
3万
查看次数

如何在图形坐标中指定matplotlib中的图例位置

我知道bbox_to_anchor关键字和这个帖子,它非常有用地建议如何手动放置图例:

如何将传说从情节中删除

但是,我想在图表中使用我的x轴和y轴的坐标来指定图例位置(在图中),因为我可能需要将图形移动到具有不同轴环境的大图中,每次我这样做时,我都不想手动使用这些坐标.这可能吗?

编辑:这里有一个小例子:

import numpy as n
f, axarr = plt.subplots(2,sharex=True)
axarr[1].set_ylim([0.611,0.675])
axarr[0].set_ylim([0.792,0.856]) 
axarr[0].plot([0, 0.04, 0.08],n.array([ 0.83333333,  0.82250521,0.81109048]), label='test1') 
axarr[0].errorbar([0, 0.04, 0.08],n.array([ 0.8,  0.83,   0.82]),n.array([0.1,0.1,0.01]), label='test2') 
axarr[1].plot([0, 0.04, 0.08],n.array([ 0.66666667,  0.64888304,  0.63042428]))
axarr[1].errorbar([0, 0.04, 0.08],n.array([ 0.67,  0.64,  0.62]),n.array([ 0.01,  0.05,  0.1]))
axarr[0].legend(bbox_to_anchor=(0.04, 0.82, 1., .102),labelspacing=0.1,       handlelength=0.1, handletextpad=0.1,frameon=False, ncol=4, columnspacing=0.7)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我觉得让我感到困惑的是,传说实际上并没有从0.82开始,实际上对于我的大图(有5个这种类型的子图),我需要使用图例坐标bbox_to_anchor =(0.04,1.15,1.,.010)为了使图例出现在坐标(0.02,0.83)上.但也许我得到别的错了?

python matplotlib

30
推荐指数
4
解决办法
7万
查看次数

bbox_to_anchor和loc在matplotlib中

我遇到了matplotlib使用关键字loc和自定义图例位置的代码bbox_to_anchor.例如 :

fig.legend([line1, line2], ['series1', 'series2'], bbox_to_anchor=[0.5, 0.5], 
           loc='center', ncol=2)
Run Code Online (Sandbox Code Playgroud)

我已经看到上面的变化bbox_to_anchor用于之后loc.

我理解使用bbox_to_anchorloc分开的目的.但是,在同一传奇规范中使用两者有什么好处吗?根据我的理解和用法,在我看来,如果bbox_to_anchor指定,那么loc参数几乎不在乎.

谁能证实这一点?我没有看到任何关于此的文档.

python matplotlib

27
推荐指数
2
解决办法
4万
查看次数

'bbox_to_anchor'的4元素元组参数在matplotlib中的含义是什么?

在matplotlib网站的"图例指南" 的"图例位置"部分中,有一个小脚本,其中第9行是plt.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3, ncol=2, mode="expand", borderaxespad=0.).我见过的所有元组bbox_to_anchor都有2个元素,但是这个元素有4个.如果元组通过有4个元素,每个元素意味着什么?

我在pyplot.legend 文档中看到它,它说了一些关于bbox_transform坐标的东西.所以我环顾四周,发现matplotlib.transforms.Bbox了一个static from_bounds(x0, y0, width, height).

我猜测4元组参数的设置基于此from_bounds.我将脚本复制到Spyder,%matplotlib在Ipython控制台中完成,并更改了一些值.这似乎是有道理的,但当我尝试只改变.102类似的东西时0.9,传说并没有改变.我认为元组是基于的from_bounds,我只是不知道为什么改变元组中的最后一个值什么也没做.

python matplotlib

24
推荐指数
2
解决办法
6908
查看次数

使用matplotlib堆积条形图

我使用matplotlib生成条形图,看起来堆积条形图有一个错误.每个垂直堆栈的总和应为100.但是,对于X-AXIS刻度65,70,75和80,我们得到完全任意的结果,这没有任何意义.我不明白是什么问题.请在下面找到MWE.

import numpy as np
import matplotlib.pyplot as plt
import matplotlib
header = ['a','b','c','d']
dataset= [('60.0', '65.0', '70.0', '75.0', '80.0', '85.0', '90.0', '95.0', '100.0', '105.0', '110.0', '115.0', '120.0', '125.0', '130.0', '135.0', '140.0', '145.0', '150.0', '155.0', '160.0', '165.0', '170.0', '175.0', '180.0', '185.0', '190.0', '195.0', '200.0'), (0.0, 25.0, 48.93617021276596, 83.01886792452831, 66.66666666666666, 66.66666666666666, 70.96774193548387, 84.61538461538461, 93.33333333333333, 85.0, 92.85714285714286, 93.75, 95.0, 100.0, 100.0, 100.0, 100.0, 80.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0), (0.0, 50.0, 36.17021276595745, 11.320754716981133, 26.666666666666668, 33.33333333333333, 29.03225806451613, …
Run Code Online (Sandbox Code Playgroud)

python plot matplotlib bar-chart

23
推荐指数
4
解决办法
5万
查看次数

标签 统计

matplotlib ×9

python ×9

legend ×2

seaborn ×2

bar-chart ×1

pandas ×1

plot ×1