相关疑难解决方法(0)

如何使用matplotlib为许多子图创建单个图例?

我正在绘制相同类型的信息,但对于不同的国家/地区,使用matplotlib的多个子图.也就是说,我在3x3网格上有9个图,所有线都相同(当然,每行不同的值).

但是,我还没想出如何在图上只放一个图例(因为所有9个子图都有相同的线).

我怎么做?

python matplotlib

137
推荐指数
7
解决办法
11万
查看次数

matplotlib中的多轴具有不同的尺度

如何在Matplotlib中实现多个尺度?我不是在谈论相对于相同的x轴绘制的主轴和次轴,而是类似于许多趋势,其具有在相同的y轴上绘制的不同尺度并且可以通过它们的颜色来识别.

举例来说,如果我有trend1 ([0,1,2,3,4])trend2 ([5000,6000,7000,8000,9000])对时间绘制,并希望这两个趋势是不同的颜色和Y轴,不同的尺度,我怎么能做到这一点与Matplotlib?

当我调查Matplotlib时,他们说他们现在没有这个,虽然它肯定在他们的心愿单上,有没有办法实现这一目标?

是否有任何其他的python绘图工具可以实现这一目标?

python matplotlib

67
推荐指数
4
解决办法
12万
查看次数

多轴的单个图例

我有以下示例代码:

fig1.suptitle('Test')
ax1 = fig1.add_subplot(221)
ax1.plot(x,y1,color='b',label='aVal')
ax2 = ax1.twinx()
ax2.plot(x,y2,color='g',label='bVal')
ax2.grid( ls='--', color='black')
legend([ax1,ax2], loc=2)
Run Code Online (Sandbox Code Playgroud)

子图在同一个子图上有两个不同比例的轴,我只想要两个轴的一个图例.我尝试了上面的代码,它不起作用,只生成ax2的细节.有任何想法吗?

python matplotlib

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

for循环中matlabplot中的多个图例

以下程序执行正常但只显示一个图例.如何显示所有四个图例?请看附图.

import matplotlib.pyplot as plt
dct = {'list_1' : [1,2,4,3,1],'list_2' : [2,4,5,1,2],'list_3' : [1,1,3,4,6],'list_4' : [1,1,2,2,1]}

xs = [0,1,2,3,4]


for i in [1,2,3,4]:
    plt.plot(xs,dct['list_%s' %i])
    plt.legend(['%s data' %i])

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python matplotlib legend

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

隐藏Seaborn Pairplot中的图例

我想隐藏Seaborn对偶图例。官方文档没有提及关键字图例。我尝试使用的所有方法plt.legend均无效。请提出最佳的前进方式。谢谢!

import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

test = pd.DataFrame({
    'id': ['1','2','1','2','2','6','7','7','6','6'],
    'x': [123,22,356,412,54,634,72,812,129,110],
    'y':[120,12,35,41,45,63,17,91,112,151]})
sns.pairplot(x_vars='x', y_vars="y", 
                 data=test,
                 hue = 'id', 
                 height = 3)
Run Code Online (Sandbox Code Playgroud)

matplotlib python-3.x seaborn

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

在 matplotlib 和 pandas 中很难组合和重新定位两个图表的图例

我试图将两个图表绘制到一个图形上,两个图表都来自同一个数据框,但一个表示为堆积条形图,另一个表示为简单的折线图。

当我使用以下代码创建绘图时:

combined.iloc[:, 1:10].plot(kind='bar', stacked=True, figsize=(20,10))
combined.iloc[:, 0].plot(kind='line', secondary_y=True, use_index=False, linestyle='-', marker='o')
plt.legend(loc='upper left', fancybox=True, framealpha=1, shadow=True, borderpad=1)
plt.show()
Run Code Online (Sandbox Code Playgroud)

随着combined数据帧寻找这样的:

源数据框

我得到以下图像:

叠加了 CVE 行数的堆积条形图

我试图将两个图例合二为一,并将图例放置在左上角,以便所有图表都可见。

有人可以解释为什么plt.legend()似乎只编辑与combined.iloc[:, 0]我的combined数据框切片相对应的折线图吗?如果有人能看到一种快速简便的组合和重新定位图例的方法,请告诉我!我将不胜感激。

python matplotlib legend pandas

5
推荐指数
1
解决办法
604
查看次数

Matplotlib:如何调整第二个图例的zorder?

这是一个重现我的问题的示例:

import matplotlib.pyplot as plt
import numpy as np

data1,data2,data3,data4 = np.random.random(100),np.random.random(100),np.random.random(100),np.random.random(100)

fig,ax = plt.subplots()

ax.plot(data1)
ax.plot(data2)
ax.plot(data3)

ax2 = ax.twinx()
ax2.plot(data4)

plt.grid('on')
ax.legend(['1','2','3'], loc='center')
ax2.legend(['4'], loc=1)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我怎样才能使图例位于中心以绘制在线条上方?

python matplotlib

3
推荐指数
1
解决办法
1153
查看次数

标签 统计

matplotlib ×7

python ×6

legend ×2

pandas ×1

python-3.x ×1

seaborn ×1