[英]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.