python - 图例中仅显示一个数据名
问题描述
我喜欢显示两个数据列的图表。问题是图例只显示姓氏l/s
。
这是我的图表:
import pandas as pd
import matplotlib.pyplot as plt
Tab = pd.read_csv('Mst01.csv', delimiter=';')
x = Tab['Nr. ']
y1 = Tab['cm']
y2 = Tab['l/s']
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot(x, y1, 'g-', label='cm')
ax2.plot(x, y2, 'b-', label='l/s')
ax1.set_xlabel('Nr.')
ax1.set_ylabel('cm', color='g')
ax2.set_ylabel('l/s', color='b')
plt.title('Mst01')
plt.legend()
plt.show()
如果我做 ax1.legend() ax2.legend()
两个图例都将显示,但一个在另一个之上。
顺便说一句,有没有更简单的方法来获取每一行代码的空格?
解决方案
晚上好!
所以你有两种可能性,要么将图加在一起,要么使用fig.legend()
这是一些产生解决方案的示例代码
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
# Create Example Dataframe
dummy_data = np.random.random_sample((100,2))
df = pd.DataFrame(dummy_data, columns=['Col_1', 'Col_2'])
df.Col_2 = df.Col_2*100
# Create Figure
fig, ax = plt.subplots()
col_1 = ax.plot(df.Col_1, label='Col_1', color='green')
ax_2 = ax.twinx()
col_2 = ax_2.plot(df.Col_2, label='Col_2', color='r')
# first solution
lns = col_1+col_2
labs = [l.get_label() for l in lns]
ax.legend(lns, labs, loc='upper right')
# secound solution
fig.legend()
fig
从这个问题可以得出解决方案。
你说的空格是什么意思?你的意思是例如for循环的缩进?
推荐阅读
- vue.js - Vue:如何与父级的特定子组件通信
- jenkins - 如何使用布尔参数作为触发条件在 Jenkins 中触发多作业阶段?
- azure-devops - 使用 Visuyal Studio 从 GIT 获取最后的修改
- javascript - 如果没有插入数值,如何返回-1?
- java - Liferay 搜索迭代器仅在页面选择器中显示前 11 个页面
- kentico-kontent - 如何使用 Kentico Cloud Management API 将链接项目正确添加到现有链接项目列表中
- python - 为什么我的代码没有在 python 中保存/加载我的数据?
- python-3.x - sqlalchemy ORM 查询对象根据上下文返回不同类型的结果
- javascript - 访问 js 对象问题
- spring-integration - 如何确保我的应用程序一次只处理 1 条消息?