Matplotlib 如何设置pandas绘图中图例的位置
在使用pandas
绘图时,经常需要添加图例以增强可读性。pandas
内置了matplotlib
作为其绘图底层库,因此可以利用matplotlib
的相关函数来设置图例的位置。
阅读更多:Matplotlib 教程
绘制pandas图表
在绘制pandas
图表之前,我们先来了解一下pandas
的几种常见绘图方式。这些绘图方式大多以DataFrame
的每一列为一组数据,并根据索引绘制出相应的图形。
折线图
折线图适用于连续变化的数据,其中每一列为一条折线。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'a': [1, 2, 3, 4], 'b': [5, 4, 3, 2]})
plt.plot(df)
plt.show()
柱状图
柱状图适用于离散数据,其中每一列为一组柱状。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'a': [1, 2, 3, 4], 'b': [5, 4, 3, 2]})
df.plot(kind='bar')
plt.show()
散点图
散点图适用于多列数据之间的关系,其中每一组数据为一对点。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'a': [1, 2, 3, 4], 'b': [5, 4, 3, 2]})
plt.scatter(df['a'], df['b'])
plt.show()
设置图例位置
在绘制图表时,通过调用matplotlib
库的相关函数可以设置图例的位置。
根据坐标系位置设置图例位置
图例位置可以根据坐标系的上下左右四个位置进行设置。
loc='upper right'
:右上角loc='upper left'
:左上角loc='lower right'
:右下角loc='lower left'
:左下角
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'a': [1, 2, 3, 4], 'b': [5, 4, 3, 2]})
plt.plot(df)
plt.legend(loc='upper right')
plt.show()
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'a': [1, 2, 3, 4], 'b': [5, 4, 3, 2]})
plt.plot(df)
plt.legend(loc='upper left')
plt.show()
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'a': [1, 2, 3, 4], 'b': [5, 4, 3, 2]})
plt.plot(df)
plt.legend(loc='lower right')
plt.show()
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'a': [1, 2, 3, 4], 'b': [5, 4, 3, 2]})
plt.plot(df)
plt.legend(loc='lower left')
plt.show()
根据图表大小设置图例位置
当图表的大小变化时,我们还可以通过计算图例的位置来保证其相对位置不变。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'a: [1, 2, 3, 4], 'b': [5, 4, 3, 2]})
fig, ax = plt.subplots()
ax.plot(df)
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))
plt.show()
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'a': [1, 2, 3, 4], 'b': [5, 4, 3, 2]})
fig, ax = plt.subplots()
ax.plot(df)
ax.legend(loc='center right', bbox_to_anchor=(0, 0.5))
plt.show()
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'a': [1, 2, 3, 4], 'b': [5, 4, 3, 2]})
fig, ax = plt.subplots()
ax.plot(df)
ax.legend(loc='upper center', bbox_to_anchor=(0.5, 1.1), ncol=2)
plt.show()
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'a': [1, 2, 3, 4], 'b': [5, 4, 3, 2]})
fig, ax = plt.subplots()
ax.plot(df)
ax.legend(loc='lower center', bbox_to_anchor=(0.5, -0.1), ncol=2)
plt.show()
总结
matplotlib
提供了多种设置图例位置的方法,可以根据坐标系或图表大小来设置图例位置,同时还可以通过设置bbox_to_anchor
参数来调整图例的相对位置。通过合理的使用这些方法,我们可以使绘制出来的图表更加具有可读性。