Python pyplot/matplotlib中作为y值的单词

Python pyplot/matplotlib中作为y值的单词,python,matplotlib,Python,Matplotlib,我正在尝试学习如何使用pylab(以及它的其他工具)。我目前正试图理解pyplot,但我需要创建一种非常特殊的绘图类型。它基本上是一个线条图,y轴上有文字而不是数字 大概是这样的: hello | +---+ world | +---------+ +---|---|---|---|---|--> 0 1 2 3 4 5 对于任何python图形库,我将如何做到这一点?如果您告诉我如何使用pyplot或pylab套件库,将

我正在尝试学习如何使用pylab(以及它的其他工具)。我目前正试图理解pyplot,但我需要创建一种非常特殊的绘图类型。它基本上是一个线条图,y轴上有文字而不是数字

大概是这样的:

hello |   +---+
world |         +---------+ 
      +---|---|---|---|---|-->
      0   1   2   3   4   5
对于任何python图形库,我将如何做到这一点?如果您告诉我如何使用pyplot或pylab套件库,将获得额外的积分

谢谢!
Chmod

我在代码中添加了所有解释:

# Import the things you need
import numpy as np
import matplotlib.pyplot as plt

# Create a matplotlib figure
fig, ax = plt.subplots()

# Create values for the x axis from -pi to pi
x = np.linspace(-np.pi, np.pi, 100)

# Calculate the values on the y axis (just a raised sin function)
y = np.sin(x) + 1

# Plot it
ax.plot(x, y)

# Select the numeric values on the y-axis where you would
# you like your labels to be placed
ax.set_yticks([0, 0.5, 1, 1.5, 2])

# Set your label values (string). Number of label values
# sould be the same as the number of ticks you created in
# the previous step. See @nordev's comment
ax.set_yticklabels(['foo', 'bar', 'baz', 'boo', 'bam'])
就这样

或者,如果您不需要子地块,只需:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-np.pi, np.pi, 100)
y = np.sin(x) + 1
plt.plot(x, y)
plt.yticks([0, 0.5, 1, 1.5, 2], ['foo', 'bar', 'baz', 'boo', 'bam'])

如果不需要图形和子图,这只是做同样事情的一个简短版本。

我在代码中添加了所有解释:

# Import the things you need
import numpy as np
import matplotlib.pyplot as plt

# Create a matplotlib figure
fig, ax = plt.subplots()

# Create values for the x axis from -pi to pi
x = np.linspace(-np.pi, np.pi, 100)

# Calculate the values on the y axis (just a raised sin function)
y = np.sin(x) + 1

# Plot it
ax.plot(x, y)

# Select the numeric values on the y-axis where you would
# you like your labels to be placed
ax.set_yticks([0, 0.5, 1, 1.5, 2])

# Set your label values (string). Number of label values
# sould be the same as the number of ticks you created in
# the previous step. See @nordev's comment
ax.set_yticklabels(['foo', 'bar', 'baz', 'boo', 'bam'])
就这样

或者,如果您不需要子地块,只需:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-np.pi, np.pi, 100)
y = np.sin(x) + 1
plt.plot(x, y)
plt.yticks([0, 0.5, 1, 1.5, 2], ['foo', 'bar', 'baz', 'boo', 'bam'])

如果你不需要数字和子图,这只是做同样事情的一个简短版本。

@tcaswell至少这个标题更有意义…@joaquin Fair。我对另一个标题进行了编辑,使之有意义。@至少这一个标题更有意义…@joaquin Fair。我编辑了另一个标题以使其有意义。在代码的最后一条注释中,您并非完全“正确”;滴答声标签的数量不必与滴答声的数量相同。如果ticklabel的数量小于ticklabel的数量,则没有相应ticklabel的ticklabel不会设置其ticklabel,并且它仍然是一个空字符串。如果ticklabels的数量大于ticks的数量,则会忽略多余的ticklabels。两者都不会引起错误。尽管如此,我相信在大多数情况下,您的解决方案是最直观的。非常简洁的答案,这正是我想要的!非常感谢大家!在代码的最后一条注释中,您并不完全“正确”;滴答声标签的数量不必与滴答声的数量相同。如果ticklabel的数量小于ticklabel的数量,则没有相应ticklabel的ticklabel不会设置其ticklabel,并且它仍然是一个空字符串。如果ticklabels的数量大于ticks的数量,则会忽略多余的ticklabels。两者都不会引起错误。尽管如此,我相信在大多数情况下,您的解决方案是最直观的。非常简洁的答案,这正是我想要的!非常感谢大家!