Python 在matplotlib中打印字符串值
我正在使用matplotlib作为绘图应用程序。我试图创建一个以字符串作为X值的图形。但是,使用Python 在matplotlib中打印字符串值,python,matplotlib,Python,Matplotlib,我正在使用matplotlib作为绘图应用程序。我试图创建一个以字符串作为X值的图形。但是,使用绘图函数需要X的数值 如何使用字符串X值?我知道有一种方法是有效的,尽管我认为创建自定义符号是实现这一点的更自然的方法 from matplotlib import pyplot as PLT # make up some data for this example t = range(8) s = 7 * t + 5 # make up some data labels which we want
绘图
函数需要X的数值
如何使用字符串X值?我知道有一种方法是有效的,尽管我认为创建自定义符号是实现这一点的更自然的方法
from matplotlib import pyplot as PLT
# make up some data for this example
t = range(8)
s = 7 * t + 5
# make up some data labels which we want to appear in place of the symbols
x = 8 * "dp".split()
y = map(str, range(8))
data_labels = [ i+j for i, j in zip(x, y)]
fig = PLT.figure()
ax1 = fig.add_subplot(111)
ax1.plot(t, s, "o", mfc="#FFFFFF") # set the symbol color so they are invisible
for a, b, c in zip(t, s, data_labels) :
ax1.text(a, b, c, color="green")
PLT.show()
所以这就是“dp1”,“dp2”,。。。代替每个原始数据符号——本质上是创建自定义“文本符号”,尽管我不得不再次相信在matplotlib中有一种更直接的方法可以做到这一点(不使用美工)。为什么不让x值成为一些自动递增的数字,然后更改标签
--jed我找不到一个方便的方法来实现这一点,所以我求助于这个小助手函数
import matplotlib.pyplot as p
def plot_classes(x, y, plotfun=p.scatter, **kwargs):
from itertools import count
import numpy as np
classes = sorted(set(x))
class_dict = dict(zip(classes, count()))
class_map = lambda x: class_dict[x]
plotfun(map(class_map, x), y, **kwargs)
p.xticks(np.arange(len(classes)), classes)
然后,调用plot_类(data[“class”]、data[“y”]、marker=“+”)
应该可以正常工作。您应该尝试xticks
import pylab
names = ['anne','barbara','cathy']
counts = [3230,2002,5456]
pylab.figure(1)
x = range(3)
pylab.xticks(x, names)
pylab.plot(x,counts,"g")
pylab.show()
在上的matplotlib 2.1中,可以在打印函数中使用字符串
import matplotlib.pyplot as plt
x = ["Apple", "Banana", "Cherry"]
y = [5,2,3]
plt.plot(x, y)
plt.show()
请注意,为了保留绘图上输入字符串的顺序,您需要使用matplotlib>=2.2。谢谢您的回复。我发现了这个类:matplotlib.ticker.FixedFormatter(seq),它允许您将字符串集指定为序列。这是一个被否决的,但我对它进行了否决,因为它是迄今为止最紧凑的解决方案,在大多数情况下,不会破坏任何其他解决方案。