сюжет: изменить размер точек с их значением - PullRequest
1 голос
/ 21 июня 2019

Ниже я создал простой пример своего набора данных.У меня есть 4 балла, и каждый шаг их значение меняется.Точки построены в положениях x, y, и я хочу, чтобы их размер изменялся вместе со значением.Есть еще одна проблема, каждая точка соединена линией, и я не хочу этого.(я не могу использовать plt.scatter)

import pandas as pd
import matplotlib.pyplot as plt

data=[[1,1,3],[1,2,1],[2,1,9],[2,2,0]]
a=pd.DataFrame(data)
a.columns=['x','y','value']

data2=[[1,1,5],[1,2,2],[2,1,1],[2,2,3]]
b=pd.DataFrame(data2)
b.columns=['x','y','value']

data3=[[1,1,15],[1,2,7],[2,1,4],[2,2,8]]
c=pd.DataFrame(data3)
c.columns=['x','y','value']

final=[a,b,c]

for i in range(0,len(final)):
    fig, ax = plt.subplots()
    plt.plot(final[i]['x'],final[i]['y'],marker='o',markersize=22)

с этим я фиксирую размер, в котором появляется линия, как я могу удалить ее?если я изменяю размер маркера, он не работает

for i in range(0,len(final)):
    fig, ax = plt.subplots()
    plt.plot(final[i]['x'],final[i]['y'],marker='o',markersize=final[i]['value'])

, как я уже говорил, я хочу получить другой график, в котором есть только точки с различным измерением в зависимости от их значения

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

У вас есть аргумент для ширины линии в графиках plt.plot.Пожалуйста, установите его на ноль.

plt.plot(final[i]["x"], final[i]["y"], marker="o", markersize=22, linewidth=0)
0 голосов
/ 21 июня 2019

Так как вы не можете использовать scatter, вам нужно перебрать значения, чтобы использовать markersize, так как он принимает не массивы, а скаляр. Кроме того, чтобы просто нанести маркер, вы используете 'o' для круга. Я использовал size*5, чтобы увеличить круги.

for i in range(0,len(final)):
    fig, ax = plt.subplots()
    for x, y, size in zip(final[i]['x'],final[i]['y'], final[i]['value']):
        plt.plot(x, y, 'o', markersize=size*5)

На случай, если вы хотите построить их как вспомогательные участки

fig, axes = plt.subplots(1,3, figsize=(9, 2))

for i in range(0,len(final)):
    for x, y, size in zip(final[i]['x'],final[i]['y'], final[i]['value']):
        axes[i].plot(x, y, 'o', markersize=size*5)
plt.tight_layout()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...