简体   繁体   English

如何使用matplotlib在图形X轴上绘制分数值?

[英]How to plot fraction values in a graph x-axis using matplotlib?

I have the following array: 我有以下数组:

np.array([0,1/3.,2/3.,1])

I want to write this values in the fraction form in a graph x-axis using matplotlib, anyone knows how to do it? 我想使用matplotlib在x轴图形中以分数形式编写此值,有人知道该怎么做吗?

for example: 例如:

from matplotlib import pyplot as plt

X = np.array([0,1/3.,2/3.,1])
Y = 2*X
plt.xticks(np.unique(X))
plt.plot(X,Y)

在此处输入图片说明

I don't know if it is the best solution, but it works for me: 我不知道这是否是最好的解决方案,但对我有用:

from matplotlib import pyplot as plt
from fractions import Fraction

X = np.array([0,1/3.,2/3.,1])
Y = 2*X
X_tick = np.array([])
for item in X:
    X_tick = np.append(X_tick,Fraction(item).limit_denominator())
plt.xticks(np.unique(X),X_tick)
plt.plot(X,Y)

在此处输入图片说明

A slightly cleaner version of the answer by @dalmeida13 using a list comprehension: @ dalmeida13使用列表理解的答案的更简洁版本:

from matplotlib import pyplot as plt
from fractions import Fraction
import numpy as np

X = np.array([0,1/3.,2/3.,1])
Y = 2*X

X_tick = [Fraction(item).limit_denominator() for item in X]
plt.xticks(np.unique(X), X_tick)
plt.plot(X,Y)
plt.show()

which results in the same outcome. 结果相同。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM