我正在绘制相同类型的信息,但对于不同的国家/地区,使用matplotlib的多个子图.也就是说,我在3x3网格上有9个图,所有线都相同(当然,每行不同的值).
但是,我还没想出如何在图上只放一个图例(因为所有9个子图都有相同的线).
我怎么做?
如何在Matplotlib中实现多个尺度?我不是在谈论相对于相同的x轴绘制的主轴和次轴,而是类似于许多趋势,其具有在相同的y轴上绘制的不同尺度并且可以通过它们的颜色来识别.
举例来说,如果我有trend1 ([0,1,2,3,4])和trend2 ([5000,6000,7000,8000,9000])对时间绘制,并希望这两个趋势是不同的颜色和Y轴,不同的尺度,我怎么能做到这一点与Matplotlib?
当我调查Matplotlib时,他们说他们现在没有这个,虽然它肯定在他们的心愿单上,有没有办法实现这一目标?
是否有任何其他的python绘图工具可以实现这一目标?
我有以下示例代码:
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的细节.有任何想法吗?
以下程序执行正常但只显示一个图例.如何显示所有四个图例?请看附图.
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)

我想隐藏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) 我试图将两个图表绘制到一个图形上,两个图表都来自同一个数据框,但一个表示为堆积条形图,另一个表示为简单的折线图。
当我使用以下代码创建绘图时:
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数据帧寻找这样的:
我得到以下图像:
我试图将两个图例合二为一,并将图例放置在左上角,以便所有图表都可见。
有人可以解释为什么plt.legend()似乎只编辑与combined.iloc[:, 0]我的combined数据框切片相对应的折线图吗?如果有人能看到一种快速简便的组合和重新定位图例的方法,请告诉我!我将不胜感激。
这是一个重现我的问题的示例:
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)

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