gpt4 book ai didi

python - 如何使用 secondary_y 调整 Pandas 图的刻度和标签大小

转载 作者:行者123 更新时间:2023-12-05 03:34:31 26 4
gpt4 key购买 nike

我有一个用 pandas.DataFrame.plot 创建的带有左右 y 轴的图并指定 secondary_y=True

我想增加 y 轴刻度参数的字体大小,但似乎只有左侧 y 轴字体大小在增加。

import pandas as pd
import numpy as np

# sample dataframe
sample_length = range(1, 2+1)
rads = np.arange(0, 2*np.pi, 0.01)
data = np.array([np.sin(t*rads) for t in sample_length])
df = pd.DataFrame(data.T, index=pd.Series(rads.tolist(), name='radians'), columns=[f'freq: {i}x' for i in sample_length])

# display(df.head(3))
freq: 1x freq: 2x
radians
0.00 0.000000 0.000000
0.01 0.010000 0.019999
0.02 0.019999 0.039989

# plot
ax1 = df.plot(y='freq: 1x', ylabel='left-Y', figsize=(8, 5))
df.plot(y='freq: 2x', secondary_y=True, ax=ax1)

ax1.tick_params(axis='both', labelsize=20)

enter image description here

增加右y轴字体大小的方法是什么?

最佳答案

  • 使用 ax2.set_ylabel('right-Y', fontsize=30) 访问 secondary_y 轴,或使用 ax1 访问它.right_ax 属性。 dir(ax1) 将显示 ax1 的所有可用方法。
      如果 ax2 使用 .twinx() 实现,则
    • .right_ax 不起作用:
      • ax2 = ax1.twinx()df.plot(y='freq: 2x', ax=ax2)
      • ax2.set_ylabel('right-Y', fontsize=30) 适用于 .twinx()
  • 参见 pandas User Guide: Plotting on a secondary y-axis
  • python 3.8.12pandas 1.3.4matplotlib 3.4.3 中测试
# plot the primary axes
ax1 = df.plot(y='freq: 1x', ylabel='left-Y', figsize=(8, 5))

# add the secondary y axes and assign it
ax2 = df.plot(y='freq: 2x', secondary_y=True, ax=ax1)

# adjust the ticks for the primary axes
ax1.tick_params(axis='both', labelsize=14)

# adjust the ticks for the secondary y axes
ax2.tick_params(axis='y', labelsize=25)

# set the primary (left) y label
ax1.set_ylabel('left Y', fontsize=18)

# set the secondary (right) y label from ax1
ax1.right_ax.set_ylabel('right-Y', fontsize=30)

# alternatively (only use one): set the secondary (right) y label from ax2
# ax2.set_ylabel('right-Y', fontsize=30)

plt.show()

enter image description here

注意事项

  • 如果绘制所有可用列,其中选择列应位于secondary_y,则无需指定y=,并且secondary_y=['...', '...', ..., '...'] 可以是一个列表。
  • 因为辅助轴与主轴同时创建,所以辅助轴未分配给变量,但这可以通过 ax2 = ax.right_ax 完成,然后 ax2可以直接使用
ax = df.plot(ylabel='left-Y', secondary_y=['freq: 2x'], figsize=(8, 5))

ax.tick_params(axis='both', labelsize=14)
ax.right_ax.tick_params(axis='y', labelsize=25)

ax.set_ylabel('left Y', fontsize=18)

# set the right y axes
ax.right_ax.set_ylabel('right-Y', fontsize=30)

关于python - 如何使用 secondary_y 调整 Pandas 图的刻度和标签大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70133501/

26 4 0