Matplotlib в Ubuntu 16.04 [дубликат]

Когда я столкнулся с этой ошибкой в ​​Visual Studio,

«При установлении соединения с SQL Server возникла связанная с сетью или конкретная ошибка экземпляра. Сервер не найден или не был доступен. Проверьте правильность имени экземпляра и настройте SQL Server для удаленного подключения. (поставщик: поставщик Named Pipes, ошибка: 40 - не удалось открыть соединение с SQL Server) »

... это было во время выполнения следующего кода C #, который пытался получите данные SQL Server, чтобы отобразить их в сетке. Разрыв произошел именно в строке, которая говорит connect.Open ():

        using (var connect = Connections.mySqlConnection)
        {
            const string query = "SELECT Name, Birthdate, Narrative FROM Friends";
            using (var command = new SqlCommand(query, connect))
            {
                connect.Open();
                using (var dr = command.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        // blah
                    }
                }
            }
        }

Это было необъяснимо, потому что SQL-запрос был очень простым, у меня была правильная строка подключения, и сервер базы данных был доступен. Я решил запустить сам SQL-запрос вручную в SQL Management Studio, и он прошел отлично и дал несколько записей. Но в результатах запроса оставалось одно: в тексте типа «varchar (max) в таблице« Друзья »был некорректно закодированный текст HTML (в частности, некоторые закодированные символы комментариев сортировки <!--, помещенные в данные столбца« Повествование » ). Строка подозрительных данных выглядела так:

Name    Birthdate    Narrative
====    =========    ============== 
Fred    21-Oct-79    &lt;!--HTML Comment -->Once upon a time...

Обратите внимание на кодированный HTML-символ «&lt;», который означал «& lt;» персонаж. Как-то это пробилось в базу данных, и мой код на C # не смог его забрать! Он провалился каждый раз прямо на линии connect.Open ()! После того, как я вручную отредактировал эту одну строку данных в таблице базы данных «Друзья» и поместил в декодированный «& lt;» характер, все сработало! Вот как должна выглядеть эта строка:

Name    Birthdate    Narrative
====    =========    ============== 
Fred    21-Oct-79    <!--HTML Comment -->Once upon a time...

Я отредактировал одну плохую строку, которую я использовал, используя этот простой оператор UPDATE ниже. Но если у вас было несколько нарушающих строк закодированного HTML, вам может понадобиться более сложная инструкция UPDATE, которая использует функцию REPLACE:

UPDATE Friends SET Narrative = '<!--HTML Comment -->Once upon a time...' WHERE Narrative LIKE '&lt%'

Итак, мораль истории (по крайней мере, в моем случае) , дезинфицируйте свой HTML-контент, прежде чем хранить его в базе данных, и вы не получите эту загадочную ошибку SQL Server в первую очередь! (Ну, правильная дезинфекция / декодирование вашего HTML-контента является предметом другого обсуждения, достойного отдельного поиска StackOverflow, если вам нужна дополнительная информация!) [/ ​​G6]

13
задан ImportanceOfBeingErnest 4 February 2017 в 22:29
поделиться

1 ответ

В matplotlib 2.x на краях имеется автоматическая граница, которая обеспечивает хорошее соответствие данных в осевых шипах. В этом случае, вероятно, желательно, чтобы этот край был задан на оси y. По умолчанию он установлен в 0.05 в единицах осевого диапазона. Чтобы установить маржу на 0 по оси x, используйте

plt.margins(x=0)

или

ax.margins(x=0)

в зависимости от контекста. Также смотрите документацию .

Если вы хотите избавиться от поля во всем скрипте, вы можете использовать

plt.rcParams['axes.xmargin'] = 0

в начале вашего скрипта (то же самое для y). Если вы хотите полностью и навсегда избавиться от поля, вам может потребоваться изменить соответствующую строку в файле matplotlib rc .

Альтернативно для изменения полей используйте plt.xlim(..) или ax.set_xlim(..), чтобы вручную установить пределы осей таким образом, чтобы не осталось белого пробела.

19
ответ дан ImportanceOfBeingErnest 17 August 2018 в 19:15
поделиться
  • 1
    Спасибо, что это сработало, наверное, я пропустил .margins по документации. Книга, которую я использовал, не содержала кода в тексте, и у нее все еще не было пробелов, поэтому я был смущен тем, почему у меня было какое-то пустое пространство. – lmurdock12 4 February 2017 в 22:52
  • 2
    Ну, маржа, превышающая 0, снова вводится в matplotlib 2.0, поэтому в предыдущих версиях вопрос всегда был обратным: «Как мне добавить некоторый запас в?». Думаю, вы никогда не сможете угодить всем. ;-) Я обновил ответ, чтобы добавить дополнительную информацию. – ImportanceOfBeingErnest 4 February 2017 в 23:23
  • 3
    Обратите внимание на stackoverflow.com/questions/42713208/… , чтобы по-настоящему восстановить matplotlib до 2.0, вам также понадобится plt.rcParams['axes.autolimit_mode'] = 'round_numbers'. – cqcn1991 11 March 2017 в 05:35
Другие вопросы по тегам:

Похожие вопросы: