Как объяснил scompt.com , запрос может завершиться ошибкой. Используйте этот код, чтобы получить ошибку запроса или правильный результат:
$username = $_POST['username'];
$password = $_POST['password'];
$result = mysql_query("
SELECT * FROM Users
WHERE UserName LIKE '".mysql_real_escape_string($username)."'
");
if($result)
{
while($row = mysql_fetch_array($result))
{
echo $row['FirstName'];
}
} else {
echo 'Invalid query: ' . mysql_error() . "\n";
echo 'Whole query: ' . $query;
}
Для получения дополнительной информации см. Документацию для mysql_query()
.
Фактической ошибкой были одиночные кавычки, так что переменная $username
не анализировалась. Но вы действительно должны использовать mysql_real_escape_string($username)
, чтобы избежать инъекций SQL.
Предостережение: если метки метки уже установлены в строку (как это обычно бывает в случае, например, в коробке), это не будет работать с любой версией matplotlib более новой, чем 1.1.0
. Если вы работаете с текущим мастером github, это не сработает. Я не уверен, что проблема еще ... Это может быть непреднамеренное изменение, или это может быть не так ...
Обычно вы делаете что-то в этом направлении:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
# We need to draw the canvas, otherwise the labels won't be positioned and
# won't have values yet.
fig.canvas.draw()
labels = [item.get_text() for item in ax.get_xticklabels()]
labels[1] = 'Testing'
ax.set_xticklabels(labels)
plt.show()
[/g0]
Чтобы понять причину, по которой вам нужно перепрыгнуть через столько обручей, вам нужно понять немного больше о том, как структурируется matplotlib.
Matplotlib намеренно избегает выполнения «статического» позиционирования тиков и т. д., если это явно не сказано. Предполагается, что вы захотите взаимодействовать с сюжетом, и поэтому границы сюжета, галочки, метки и т. Д. Будут динамически меняться.
Поэтому вы не можете просто установить текст данный тиковый ярлык.
Однако, если Locators и Formatters установлены как статические (FixedLocator
и FixedFormatter
, соответственно), то по умолчанию они устанавливаются локатором и форматированием оси каждый раз, , то метки тика остаются неизменными.
Это то, что делает set_*ticklabels
или ax.*axis.set_ticklabels
.
Надеюсь, это значительно облегчит понимание того, почему изменение индивидуальной метки метки немного запутанно.
Часто то, что вы на самом деле хотите сделать, это просто аннотировать определенную позицию. В этом случае загляните в annotate
.
В новых версиях matplotlib
, если вы не устанавливаете метки тика с кучей значений str
, они по умолчанию ''
(и когда график рисуется, метки являются просто значениями тиков) , Зная, что для получения желаемого результата потребуется что-то вроде этого:
>>> from pylab import *
>>> axes = figure().add_subplot(111)
>>> a=axes.get_xticks().tolist()
>>> a[1]='change'
>>> axes.set_xticklabels(a)
[<matplotlib.text.Text object at 0x539aa50>, <matplotlib.text.Text object at 0x53a0c90>,
<matplotlib.text.Text object at 0x53a73d0>, <matplotlib.text.Text object at 0x53a7a50>,
<matplotlib.text.Text object at 0x53aa110>, <matplotlib.text.Text object at 0x53aa790>]
>>> plt.show()
и результат: [/g0]
, и теперь, если вы проверите _xticklabels
, они больше не являются связкой ''
.
>>> [item.get_text() for item in axes.get_xticklabels()]
['0.0', 'change', '1.0', '1.5', '2.0']
Он работает в версиях от 1.1.1rc1
до текущей версии 2.0
.
вы можете сделать:
for k in ax.get_xmajorticklabels():
if some-condition:
k.set_color(any_colour_you_like)
draw()
Прошло некоторое время с тех пор, как был задан этот вопрос. На сегодняшний день (matplotlib 2.2.2
), и после некоторых чтений и испытаний я считаю, что лучший / правильный способ:
Matplotlib имеет модуль с именем ticker
, что "содержит классы для поддержки полностью настраиваемого определения и форматирования тика" . Чтобы изменить конкретный тик на графике, для меня работает следующее:
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
import numpy as np
def update_ticks(x, pos):
if x == 0:
return 'Mean'
elif pos == 6:
return 'pos is 6'
else:
return x
data = np.random.normal(0, 1, 1000)
fig, ax = plt.subplots()
ax.hist(data, bins=25, edgecolor='black')
ax.xaxis.set_major_formatter(mticker.FuncFormatter(update_ticks))
plt.show()
Предостережение! x
- значение галочки, а pos
- его относительное положение по порядку по оси. Обратите внимание, что pos
принимает значения, начиная с 1
, а не в 0
, как обычно, при индексировании.
В моем случае я пытался отформатировать y-axis
гистограммы с процентные значения. mticker
имеет другой класс с именем PercentFormatter
, который может сделать это легко, без необходимости определять отдельную функцию по-прежнему:
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
import numpy as np
data = np.random.normal(0, 1, 1000)
fig, ax = plt.subplots()
weights = np.ones_like(data) / len(data)
ax.hist(data, bins=25, weights=weights, edgecolor='black')
ax.yaxis.set_major_formatter(mticker.PercentFormatter(xmax=1.0, decimals=1))
plt.show()
В этом случае xmax
- это значение данных, которое соответствует 100%. Проценты вычисляются как x / xmax * 100
, поэтому мы исправим xmax=1.0
. Кроме того, decimals
- количество знаков после запятой после точки.
Можно также сделать это с помощью pylab и xticks
import pylab as plt
x = [0,1,2]
y = [90,40,65]
labels = ['high', 'low', 37337]
plt.plot(x,y, 'r')
plt.xticks(x, labels, rotation='vertical')
plt.show()
http://matplotlib.org/examples/ticks_and_spines /ticklabels_demo_rotation.html
Это работает:
import matplotlib.pyplot as plt
fig, ax1 = plt.subplots(1,1)
x1 = [0,1,2,3]
squad = ['Fultz','Embiid','Dario','Simmons']
ax1.set_xticks(x1)
ax1.set_xticklabels(squad, minor=False, rotation=45)
Класс axes имеет функцию set_yticklabels , которая позволяет вам устанавливать метки меток следующим образом:
#ax is the axes instance
group_labels = ['control', 'cold treatment',
'hot treatment', 'another treatment',
'the last one']
ax.set_xticklabels(group_labels)
Я все еще работаю над тем, почему ваш пример выше не был Не работай.