В Python matplotlib при построении графика с несколькими барами я могу пропустить стержни, если значение является NAN, чPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 В Python matplotlib при построении графика с несколькими барами я могу пропустить стержни, если значение является NAN, ч

Сообщение Anonymous »

Я кодирую в Python, используя библиотеку Matplotlib, чтобы сделать многопрочный график, например, график с двойным барьером, но у меня есть 7 бар на категорию. Я не уверен, что у меня есть обязательно лучший способ для меня построить эти данные, но они работают. Значение - 0 или NAN. Это создает пробелы в данных, где также отсутствует полоса. Расстояние и т. Д. < /p>
Вот данные, которые я использую. Я разместил его здесь как словарь для копирования, но мой формат использует DataFrame. < /P>

Код: Выделить всё

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

# Dictionary:
bardict = {"B": [0.14,0.12,0.02,0.02,nan,nan,nan],
"L": [0.08,0.14,0.06,0.06,0.07,0.12,0.08],
"M": [0.08,0.09,0.07,0.08,0.22,0.15,0.06],
"C": [0.11,0.10,0.13,0.35,nan,0.11,0.21],
"S": [nan,0.11,0.17,0.46,0.09,0.10,0.08],
"W": [0.12,0.09,0.29,0.63,0.10,0.38,0.26]}

# DataFrame saved under name bar_C:
B     C     L     M     S     W
0  0.14  0.11  0.08  0.08   NaN  0.12
1  0.12  0.10  0.14  0.09  0.11  0.09
2  0.02  0.13  0.06  0.07  0.17  0.29
3  0.02  0.35  0.06  0.08  0.46  0.63
4   NaN   NaN  0.07  0.22  0.09  0.10
5   NaN  0.11  0.12  0.15  0.10  0.38
6   NaN  0.21  0.08  0.06  0.08  0.26
< /code>
И, наконец, вот мой код для создания гистограммы:
(примечание* - я не хочу распоряжаться гистограммой по значению, я хочу их хранится в одном и том же заказе (B, C, L, M ...) < /p>
# Convert dictionary to DataFrame
bar_C = pd.DataFrame(bardict)

fig, ax = plt.subplots(figsize=(10, 6))

N = 6
ind = np.arange(N) #*
width = 0.55

num3_vals = bar_C.loc[0]
num3 = plt.bar(ind*N+(width*0), num3_vals, width, color = 'mediumturquoise')

num4_vals = bar_C.loc[1]
num4 = plt.bar(ind*N+(width*1), num4_vals, width, color='darkred')

num5_vals = bar_C.loc[2]
num5 = plt.bar(ind*N+(width*2), num5_vals, width, color='lightgreen')

num6_vals = bar_C.loc[3]
num6 = plt.bar(ind*N+(width*3), num6_vals, width, color='purple')

num7_vals = bar_C.loc[4]
num7 = plt.bar(ind*N+(width*4), num7_vals, width, color='gray')
print(num7_vals)

num8_vals = bar_C.loc[5]
num8 = plt.bar(ind*N+(width*5), num8_vals, width, color='orange')

num9_vals = bar_C.loc[6]
num9 = plt.bar(ind*N+(width*6), num9_vals, width, color='darkblue')

plt.xlabel("Group")
plt.ylabel('Value')
plt.title("Multi-Bar Graph")

ax = plt.gca()

plt.xticks(ticks = (ind*N),labels = ['B','C','L','M','S','W'])
plt.legend((num3, num4, num5, num6, num7, num8, num9),
('3','4','5','6','7','8','9'),
loc='upper left')
plt.show()
< /code>
output: < /p>
B     NaN
L    0.07
M    0.22
C     NaN
S    0.09
W    0.10
Name: 4, dtype: float64
pic:
< /p>
Я совершенно новый пользователь - так что, во -первых, заранее спасибо и во -вторых, дайте мне знать, если есть какие -либо ошибки форматирования. < /p>
Я надеюсь на все батончики с данными, так как не будучи нулями, будут нанесены на график. Это сработало, за исключением того, что оставило пустое место, где батончик был бы для нулевых значений. Я хотел бы очистить его так, чтобы пустые пространства исчезали без необходимости удалять данные. 't изменить график каким -либо образом.


Подробнее здесь: https://stackoverflow.com/questions/793 ... if-the-val
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»