xlabel 和 ylabel 值未在 matplotlib 散点图中排序

Eva*_*Kim 4 python matplotlib scatter-plot

我在互联网上进行了大量繁琐的搜索,似乎我无法弄清楚如何提出正确的问题来获得我想做的事情的答案。

我想创建与散点图P / E比在y轴和股息率在x轴上。我将数据放入一个 CSV 文件中,然后将每一列作为单独的列表导入 Python。

下面是我的散点图的结果。我很困惑为什么 x 轴和 y 轴没有按数字排序。我想我必须将列表中的元素转换为浮点数,然后将其转换为散点图之前进行某种排序。

我能想到的另一个选项是能够在创建散点图的过程中对值进行排序。

这些都没有解决,我已经走到了死胡同。任何帮助或指向正确方向将不胜感激,因为我只能描述我的问题,但似乎无法在我的搜索中提出正确的问题。

import csv
import matplotlib.pyplot as plt

etf_data = csv.reader(open('xlv_xlu_combined_td.csv', 'r'))

for i, row in etf_data.iterrows():
    symbol.append(row[0])
    index.append(row[1])
    dividend.append(row[2])
    pe.append(row[3])

symbol.pop(0)
index.pop(0)
dividend.pop(0)
pe.pop(0)

indexes = [i.split('%', 1)[0] for i in index]
dividend_yield = [d.split('%', 1)[0] for d in dividend]
pe_ratio = [p.split('X', 1)[0] for p in pe]

x = dividend_yield[:5]
y = pe_ratio[:5]

plt.scatter(x, y, label='Healthcare P/E & Dividend', alpha=0.5)
plt.xlabel('Dividend yield')
plt.ylabel('Pe ratio')
plt.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

xlv_xlu_combined_td.csv

symbol,index,dividend,pe
JNJ,10.11%,2.81%,263.00X
UNH,7.27%,1.40%,21.93X
PFE,6.48%,3.62%,10.19X
MRK,4.96%,3.06%,104.92X
ABBV,4.43%,4.01%,23.86X
AMGN,3.86%,2.72%,60.93X
MDT,3.50%,2.27%,38.10X
ABT,3.26%,1.78%,231.74X
GILD,2.95%,2.93%,28.69X
BMY,2.72%,2.81%,97.81X
TMO,2.55%,0.32%,36.98X
LLY,2.49%,2.53%,81.83X
Run Code Online (Sandbox Code Playgroud)

Jod*_*mak 9

您需要将字符串转换为数字。Matplotlib 将字符串视为“类别”,并按照您提供的顺序绘制它们。