导入绘图时所需的所有模块:
from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
字符串
创建用于绘图的数据:
df=pd.DataFrame({'close':np.random.uniform(19, 36, 200)})
型
准备图形和轴对象并打印:
fig, ax = plt.subplots()
ax.plot(df.index,df['close'])
型
计算x轴、yleft-axis、yright_axis的所有最小值和最大值
xmin,xmax = df.index[0],df.index[-1]
p_min,p_max = min(df['close']),max(df['close'])
c_min,c_max = 100*p_min/p_max,100
型
使用secondary_yaxis方法创建右轴:
t_price_change = lambda t_p: 100* t_p/p_max
t_change_price = lambda t_c: t_c*p_max /100
ax_right = ax.secondary_yaxis("right", functions=(t_price_change, t_change_price))
型
为x-axis、yleft-axis、yright_axis创建刻度
ticks_x = np.append(ax.get_xticks(), (xmin,xmax))
ticks_yleft = np.append(ax.get_yticks(), (p_min,p_max))
ticks_yright = np.append(ax_right.get_yticks(), (c_min,c_max))
型
设置x-axis、yleft-axis、yright_axis的刻度
ax.set_xticks(ticks_x)
ax.set_yticks(ticks_yleft)
ax_right.set_yticks(ticks_yright)
型
设置范围
ax.set_xlim(xmin, xmax)
ax.set_ylim(p_min, p_max)
ax_right.set_ylim(c_min, c_max)
型
显示图表:
plt.show()
型
x1c 0d1x的数据
你看右边的y轴没有中间的刻度,怎么能用代码加一些呢?
2条答案
按热度按时间tkclm6bt1#
您面临的问题是,因为在第二个y轴上没有真正绘制任何东西,刻度是0,0.2,.1。添加~54和100,然后设置y_lim,将删除其他刻度。要向辅助y轴添加其他刻度并保留现有刻度(c_min和c_max),您需要将创建
ticks_yright
的行更改为bewlo...字符串
注意上面的
5
会给予你5个刻度。更改它可增加或减少刻度数。这应该给予你一个这样的情节。。x1c 0d1x的数据
aor9mmx12#
写一个函数来创建右y轴的刻度:
字符串
与上面的代码几乎相同:
型
最高价格是100,在刻度中添加90,80,70等更有意义。
的数据