Гистограммы с накоплением – популярный способ визуализации данных, особенно при сравнении нескольких категорий в пределах одной переменной. По умолчанию столбцы в составной гистограмме упорядочены снизу вверх в зависимости от значений категорий. Однако могут возникнуть ситуации, когда вы захотите изменить порядок полос, чтобы представить другую перспективу или подчеркнуть определенные категории. В этой статье мы рассмотрим различные методы изменения порядка расположения столбцов на противоположный на примерах Python и R.
Метод 1: изменение порядка данных на обратный
Один простой подход — изменить порядок данных на обратный перед созданием составной гистограммы. Давайте посмотрим, как это можно сделать в Python и R:
Пример кода Python:
import matplotlib.pyplot as plt
import numpy as np
# Sample data
categories = ['Category A', 'Category B', 'Category C']
values = [10, 20, 30]
# Reverse the order of data
categories_reversed = categories[::-1]
values_reversed = values[::-1]
# Create a stacked bar chart
plt.barh(categories_reversed, values_reversed)
plt.show()
Пример кода R:
library(ggplot2)
# Sample data
categories <- c('Category A', 'Category B', 'Category C')
values <- c(10, 20, 30)
# Reverse the order of data
categories_reversed <- rev(categories)
values_reversed <- rev(values)
# Create a stacked bar chart
df <- data.frame(categories_reversed, values_reversed)
ggplot(df, aes(x = categories_reversed, y = values_reversed, fill = categories_reversed)) +
geom_bar(stat = "identity") +
coord_flip()
Метод 2: укажите порядок в функции построения графика.
Другой подход заключается в указании порядка категорий непосредственно в функции построения графика. Этот метод позволяет контролировать заказ без изменения исходных данных.
Пример кода Python:
import matplotlib.pyplot as plt
# Sample data
categories = ['Category A', 'Category B', 'Category C']
values = [10, 20, 30]
# Create a stacked bar chart with reversed order
plt.barh(categories, values, order=categories[::-1])
plt.show()
Пример кода R:
library(ggplot2)
# Sample data
categories <- c('Category A', 'Category B', 'Category C')
values <- c(10, 20, 30)
# Create a stacked bar chart with reversed order
df <- data.frame(categories, values)
ggplot(df, aes(x = categories, y = values, fill = categories)) +
geom_bar(stat = "identity") +
coord_flip() +
scale_x_discrete(limits = rev(levels(df$categories)))
Метод 3: управление структурой данных
В некоторых случаях вам может потребоваться манипулировать структурой данных, чтобы изменить порядок расположения столбцов. Этот метод особенно полезен при работе со специализированными библиотеками или пользовательскими форматами данных.
Пример кода Python:
import matplotlib.pyplot as plt
import pandas as pd
# Sample data
data = {
'Category A': [10],
'Category B': [20],
'Category C': [30]
}
# Create a DataFrame and transpose it
df = pd.DataFrame(data).T
# Reverse the DataFrame rows
df = df[::-1]
# Create a stacked bar chart
df.plot(kind='barh', stacked=True)
plt.show()
Пример кода R:
library(ggplot2)
library(reshape2)
# Sample data
data <- list(
'Category A' = c(10),
'Category B' = c(20),
'Category C' = c(30)
)
# Convert the data to a data frame
df <- as.data.frame(data)
# Melt the data frame
df_melted <- melt(df)
# Reverse the order of categories
df_melted$category <- factor(df_melted$category, levels = rev(unique(df_melted$category)))
# Create a stacked bar chart
ggplot(df_melted, aes(x = variable, y = value, fill = category)) +
geom_bar(stat = "identity") +
coord_flip()
Изменение порядка расположения столбцов на противоположный может обеспечить другой взгляд на ваши данные и помочь выделить определенные категории. В этой статье мы рассмотрели три различных метода достижения этой цели с использованием Python и R. Изменив порядок данных, указав порядок в функции построения графика или манипулируя структурой данных, вы можете легко создавать составные гистограммы с обратным порядком. Поэкспериментируйте с этими методами и выберите тот, который лучше всего соответствует вашим потребностям в визуализации данных.