Это все на машине с 7-разрядным 64-разрядным окном, работающем под управлением python 3.4.3 x64 бит, в компиляторе PyCharm Educational edition 1.0.1. Данные, используемые для этой программы, взяты из программы Citi Bike в Нью-Йорке (данные находятся здесь: http://www.citibikenyc.com/system-data).сортировка по оси x pyplot
Я отсортировал данные так, чтобы у меня был новый CSV-файл с только идентификаторами байкеров Uniqe и сколько раз каждый велосипед ездил (файл называется Sorted_Bike_Uses.csv). Я пытаюсь сделать график с идентификатором байка против количества применений (идентификаторы байка на оси x, # использования на оси y). Мой код выглядит так:
import pandas as pd
import matplotlib.pyplot as plt
# read in the file and separate it into two lists
a = pd.read_csv('Sorted_Bike_Uses.csv', header=0)
b = a['Bike ID']
c = a['Number of Uses']
# create the graph
plt.plot(b, c)
# label the x and y axes
plt.xlabel('Bicycles', weight='bold', size='large')
plt.ylabel('Number of Rides', weight='bold', size='large')
# format the x and y ticks
plt.xticks(rotation=50, horizontalalignment='right', weight='bold', size='large')
plt.yticks(weight='bold', size='large')
# give it a title
plt.title("Top Ten Bicycles (by # of uses)", weight='bold')
# displays the graph
plt.show()
Он создает почти правильно отформатированный график. Единственная проблема заключается в том, что он сортирует идентификаторы велосипедов, чтобы они были в численном порядке, а не в порядке использования. Я попытался перепрофилировать старый код, который я использовал для создания аналогичного графика, но он просто делает еще худший график, который каким-то образом накладывает два набора данных. Это выглядит следующим образом:
my_plot = a.sort(columns='Number of Uses', ascending=True).plot(kind='bar', legend=None)
# labels the x and y axes
my_plot.set_xlabel('Bicycles')
my_plot.set_ylabel('Number of Rides')
# sets the labels along the x-axis as the names of each liquor
my_plot.set_xticklabels(b, rotation=45, horizontalalignment='right')
# displays the graph
plt.show()
Второй набор кода используется тот же набор данных в качестве первого набора кода, и был изменен от оригинала, чтобы соответствовать CITI данных велосипеда. Мой google-fu исчерпан. Я пробовал переформатировать xticks, добавив куски второго кода в первый код, добавив куски первого кода ко второму и т. Д. Возможно, что-то смотрело мне прямо в лицо, но я не вижу его. Любая помощь приветствуется.
Потому что 'участок (B, C)' участки 'b' против' c'. Если вы хотите построить их по заказу аттракционов, используйте xaxis, который является их отсортированным номером. – tacaswell
Я хочу построить их так, чтобы идентификаторы велосипедов были на оси x и остались в том порядке, в котором они находятся в файле csv. В файле они находятся в порядке наименее ездившегося байка до самого рейда. Однако, когда они построены на графике, они сортируются по порядку, а не по наименьшей степени. Где-то в коде система заказов переключается. –