簡體   English   中英

在y軸上繪制特定值,而不是從數據框中增加比例

[英]Plot specific values on y axis instead of increasing scale from dataframe

將數據框的2列繪制到折線圖中時,是否有可能在y軸上具有固定值(並使軸上的數字之間的距離保持不變),而不是不斷增加比例尺? 例如,取決於數據集中的值,而不是0、100、200、300,...而是0、21、53、124、287? 因此,基本上在軸上固定所有可能的值,而不是增加比例?

是的,您可以使用: ax.set_yticks()

例:

df = pd.DataFrame([[13, 1], [14, 1.5], [15, 1.8], [16, 2], [17, 2], [18, 3 ], [19, 3.6]], columns = ['A','B'])
fig, ax = plt.subplots()

x = df['A']
y = df['B']
ax.plot(x, y, 'g-')
ax.set_yticks(y)
plt.show()

在此處輸入圖片說明 或者,如果兩個值之間的距離很遠,則可以使用ax.set_yscale('log') 例:

df = pd.DataFrame([[13, 1], [14, 1.5], [15, 1.8], [16, 2], [17, 2], [18, 3 ], [19, 3.6], [20, 300]], columns = ['A','B'])
fig, ax = plt.subplots()

x = df['A']
y = df['B']

ax.plot(x, y, 'g-')
ax.set_yscale('log', basex=2)
ax.yaxis.set_ticks(y)
ax.yaxis.set_ticklabels(y)
plt.show()

在此處輸入圖片說明

您需要做的是:

  1. 獲取所有不同的y值並對它們進行排序

  2. 根據它們在有序列表中的位置設置它們在圖上的y位置

  3. 根據不同的有序值設置y標簽

下面的代碼可以

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

df = pd.DataFrame([[13, 1], [14, 1.8], [16, 2], [15, 1.5], [17, 2], [18, 3 ], 
                   [19, 200],[20, 3.6], ], columns = ['A','B'])

x = df['A']
y = df['B']

y_keys = np.sort(y.unique())
y_values = range(len(y_keys))
y_dict = dict(zip(y_keys,y_values))

fig, ax = plt.subplots()

ax.plot(x,[y_dict[k] for k in y],'o-')

ax.set_yticks(y_values)
ax.set_yticklabels(y_keys)

y距離固定,但值不同

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM