考虑X
和Y
关系,对于X
和Y
中单位系统的更改,数值关系会不更改。
如何在相同图中的两个单位系统中绘制此关系? (即显示相同单个图的两个 X
轴和两个 Y
轴,而不是在两个单独的图中显示此关系)< / p>
在我的特定情况下,我有以下两个图。右边的那个简单地渲染相同的数据,将其标准化为percentages of the total quantities involved。
以下是一个例子:
import numpy as np
import matplotlib.pyplot as plt
ar = np.array([80, 64, 82, 72, 9, 35, 94, 58, 19, 41, 42, 18, 29, 46, 60, 14, 38,
19, 20, 34, 59, 64, 46, 39, 24, 36, 86, 64, 39, 15, 76, 93, 54, 14,
52, 25, 14, 4, 51, 55, 16, 32, 14, 46, 41, 40, 1, 2, 84, 61, 13,
26, 60, 76, 22, 77, 50, 7, 83, 4, 42, 71, 23, 56, 41, 35, 37, 86,
3, 95, 76, 37, 40, 53, 36, 24, 97, 89, 58, 63, 69, 24, 23, 95, 7,
55, 33, 42, 54, 92, 87, 37, 99, 71, 53, 71, 79, 15, 52, 37])
ar[::-1].sort()
y = np.cumsum(ar).astype("float32")
# Normalize to a percentage
y /=y.max()
y *=100.
# Prepend a 0 to y as zero stores have zero items
y = np.hstack((0,y))
# Get cumulative percentage of stores
x = np.linspace(0,100,y.size)
# Plot the normalized chart (the one on the right)
f, ax = plt.subplots(figsize=(3,3))
ax.plot(x,y)
# Plot the unnormalized chart (the one on the left)
f, ax = plt.subplots(figsize=(3,3))
ax.plot(x*len(ar), y*np.sum(ar))
ar
。答案 0 :(得分:1)
This example,来自优秀的matploblib文档,完全解决了您的问题,除了您可能想要使用 ad hoc 解决方案用于辅助轴&#39;蜱(我的意思是,有百分比的那些)。
我想&#34;我的答案是否可能完全远离OP需求?&#34;不久我觉得有必要自己检查......按照链接和工作一点点我就可以获得下面的情节(请注意,我的数据与OP的数据不同)
这似乎与OP请求类似,但是谁知道呢?我原来的答案不够好吗? 我的回答被接受了还有什么办法呢?
答案 1 :(得分:0)
试试这个
# Plot the normalized chart (the one on the right)
f, ax = plt.subplots(figsize=(3,3))
ax.plot(x,y)
ax1 = ax.twinx().twiny()
ax1.plot(x*len(ar), y*np.sum(ar), 'r')