首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matplotlib孪生y轴

Matplotlib孪生y轴
EN

Stack Overflow用户
提问于 2020-07-14 12:10:09
回答 3查看 940关注 0票数 2

我想用y轴中间的0绘制我的数据。就像这样:

这就是我想出来的:

使用此代码:

代码语言:javascript
复制
import matplotlib.pyplot as plt

group_a_names = ['A', 'B', 'C', 'D', 'E']
group_a_values = [2, 4, 6, 8, 10]

group_b_names = ['F', 'G', 'H', 'I', 'J']
group_b_values = [1, 2, 3, 4, 5]

fig, ax1 = plt.subplots(figsize=(5, 4), dpi=100)
ax2 = ax1.twiny()

ax1.plot(group_a_names, group_a_values)
ax2.plot(group_b_names, group_b_values)

plt.show()

我怎样才能像第一张图像一样可视化我的数据?还可以在右边镜像y号的标签/标记?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-07-14 12:52:37

我只是翻转了其他的值,并倒转负面标签。

代码语言:javascript
复制
import matplotlib.pyplot as plt

group_a_names = ['A', 'B', 'C', 'D', 'E']
group_a_values = [2, 4, 6, 8, 10]

group_b_names = ['F', 'G', 'H', 'I', 'J']
group_b_values = [1, 2, 3, 4, 5]
group_b_values_neg = list(map(lambda n: n * -1, group_b_values))

max_value = max(group_a_values + group_b_values)

fig = plt.figure()
ax1 = fig.add_subplot(1, 1, 1)
ax2 = ax1.twiny()
ax1.plot(group_a_names, group_a_values, c="blue")
ax2.plot(group_b_names, group_b_values_neg, c="red")

ax1.set_ylim(max_value * -1, max_value)
ax2.set_ylim(max_value * -1, max_value)
ax2.set_yticklabels([str(abs(x)) for x in ax2.get_yticks()])

ax1.yaxis.set_ticks_position('both')
ax1.tick_params(axis="y", labelright=True)

plt.show()

票数 -1
EN

Stack Overflow用户

发布于 2020-07-14 12:24:28

这对我起了作用:

代码语言:javascript
复制
ticks = np.arange(2, 11, 2)
plt.yticks(ticks, [10, 5, 0, 5, 10])

ax1.yaxis.set_ticks_position('both')
ax1.tick_params(axis="y", labelright=True)

票数 1
EN

Stack Overflow用户

发布于 2020-07-14 12:39:54

试试这个:

代码语言:javascript
复制
import matplotlib.pyplot as plt
group_a_names = ['A', 'B', 'C', 'D', 'E']
group_a_values = [2, 4, 6, 8, 10]

group_b_names = ['F', 'G', 'H', 'I', 'J']
group_b_values = [-2, -4, -6, -8, -10]

fig, ax1 = plt.subplots(figsize=(5, 4), dpi=100)
ax1.plot(group_a_names, group_a_values)

# add second x axis
ax3 = ax1.twiny()
ax3.plot(group_b_names, group_b_values)

# add second y axis
ax2 = ax1.twinx()

# set y axis range
plt.ylim(-10, 10)

plt.show()

结果:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62894879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档