Matplotlib: как вывести значения xticks из списка - PullRequest
0 голосов
/ 24 января 2019

У меня есть следующий код:

import matplotlib.pyplot as plt
import numpy as np

xticks = ['A','B','C']
Scores = np.array([[5,7],[4,6],[8,3]])
colors = ['red','blue']
fig, ax = plt.subplots()
ax.hist(Scores,bins=3,density=True,histtype='bar',color=colors)
plt.show()

, который дает следующий вывод:

histogram of code

У меня два вопроса:

  1. Как сделать так, чтобы высота столбцов представляла значения в Scores например, самый левый красный столбец должен иметь высоту 5, а самый левый синий столбец должен иметь высоту 7, искоро.

  2. Как я могу назначить значения по оси x из списка xticks, например, под левыми двумя столбцами должна быть написана буква «A», следующие два «B» и так далее.

Ответы [ 3 ]

0 голосов
/ 24 января 2019

Вы уже проделали большую работу для гистограммы.Теперь вам просто нужно несколько графиков баров.

import matplotlib.pyplot as plt
import numpy as np

xticks = ['A','B','C']
Scores = np.array([[5,7],[4,6],[8,3]])
colors = ['red','blue']
fig, ax = plt.subplots()

# Width of bars
w=.2

# Plot both separately
ax.bar([1,2,3],Scores[:,0],width=w,color=colors[0])
ax.bar(np.add([1,2,3],w),Scores[:,1],width=w,color=colors[1])

# Assumes you want ticks in the middle
ax.set_xticks(ticks=np.add([1,2,3],w/2))

ax.set_xticklabels(xticks)
plt.show()
0 голосов
/ 24 января 2019

Вы путаете гистограмму с гистограммой.Здесь вы хотите бар сюжет.Если вы хотите использовать панд, это будет очень просто:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

xticks = ['A','B','C']
Scores = np.array([[5,7],[4,6],[8,3]])
colors = ['red','blue']
names = ["Cat", "Dog"]
fig, ax = plt.subplots()
pd.DataFrame(Scores, index=xticks, columns=names).plot.bar(color=colors, ax=ax)
plt.show()

enter image description here

Если вы используете только matplotlib, это немного сложнее, потому чтокаждый столбец должен быть нанесен независимо,

import matplotlib.pyplot as plt
import numpy as np

xticks = ['A','B','C']
Scores = np.array([[5,7],[4,6],[8,3]])
colors = ['red','blue']
names = ["Cat", "Dog"]

fig, ax = plt.subplots()

x = np.arange(len(Scores))
ax.bar(x-0.2, Scores[:,0], color=colors[0], width=0.4, label=names[0])
ax.bar(x+0.2, Scores[:,1], color=colors[1], width=0.4, label=names[1])
ax.set(xticks=x, xticklabels=xticks)
ax.legend()
plt.show()

enter image description here

0 голосов
/ 24 января 2019

plt.xticks(range(0, 6), ('A', 'A', 'B', 'B', 'C', 'C')) будет работать, чтобы ответить на вопрос часть 2, я полагаю. Я не уверен насчет высоты, так как я не делал гистограммы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...