victory#VictoryScatter JavaScript Examples
The following examples show how to use
victory#VictoryScatter.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: MonthlyScatter.js From Full-Stack-React-Projects-Second-Edition with MIT License | 5 votes |
export default function MonthlyScatter() {
const classes = useStyles()
const [error, setError] = useState('')
const [plot, setPlot] = useState([])
const [month, setMonth] = useState(new Date())
const jwt = auth.isAuthenticated()
useEffect(() => {
const abortController = new AbortController()
const signal = abortController.signal
plotExpenses({month: month},{t: jwt.token}, signal).then((data) => {
if (data.error) {
setError(data.error)
} else {
setPlot(data)
}
})
return function cleanup(){
abortController.abort()
}
}, [])
const handleDateChange = date => {
setMonth(date)
plotExpenses({month: date},{t: jwt.token}).then((data) => {
if (data.error) {
setError(data.error)
} else {
setPlot(data)
}
})
}
return (
<div style={{marginBottom: 20}}>
<Typography variant="h6" className={classes.title}>Expenses scattered over </Typography>
<MuiPickersUtilsProvider utils={DateFnsUtils}>
<DatePicker value={month} onChange={handleDateChange} views={["year", "month"]}
disableFuture
label="Month"
animateYearScrolling
variant="inline"/>
</MuiPickersUtilsProvider>
<VictoryChart
theme={VictoryTheme.material}
height={400}
width={550}
domainPadding={40}
>
<VictoryScatter
style={{
data: { fill: "#01579b", stroke: "#69f0ae", strokeWidth: 2 },
labels: { fill: "#01579b", fontSize: 10, padding:8}
}}
bubbleProperty="y"
maxBubbleSize={15}
minBubbleSize={5}
labels={({ datum }) => `$${datum.y} on ${datum.x}th`}
labelComponent={<VictoryTooltip/>}
data={plot}
domain={{x: [0, 31]}}
/>
<VictoryLabel
textAnchor="middle"
style={{ fontSize: 14, fill: '#8b8b8b' }}
x={270} y={390}
text={`day of month`}
/>
<VictoryLabel
textAnchor="middle"
style={{ fontSize: 14, fill: '#8b8b8b' }}
x={6} y={190}
angle = {270}
text={`Amount ($)`}
/>
</VictoryChart>
</div>
)
}
Example #2
Source File: Charts.js From ReactSourceCodeAnalyze with MIT License | 4 votes |
render() {
const streamData = this.props.data;
return (
<div>
<div style={{display: 'flex'}}>
<VictoryChart
theme={VictoryTheme.material}
width={400}
height={400}
style={{
parent: {
backgroundColor: '#222',
},
}}>
<VictoryAxis
style={{
axis: {stroke: 'white'},
tickLabels: {fill: 'white'},
}}
/>
<VictoryAxis
style={{
axis: {stroke: 'white'},
tickLabels: {fill: 'white'},
}}
dependentAxis
/>
<VictoryScatter
data={streamData[0]}
size={6}
style={{
data: {
fill: d => colors[d.x % 5],
},
}}
/>
</VictoryChart>
<VictoryChart
theme={VictoryTheme.material}
width={400}
height={400}
style={{
parent: {
backgroundColor: '#222',
},
}}
domainPadding={[20, 20]}>
<VictoryAxis
style={{
axis: {stroke: 'white'},
tickLabels: {fill: 'white'},
}}
/>
<VictoryAxis
style={{
axis: {stroke: 'white'},
tickLabels: {fill: 'white'},
}}
dependentAxis
/>
<VictoryBar
data={streamData[0]}
style={{
data: {
fill: d => colors[d.x % 5],
stroke: 'none',
padding: 5,
},
}}
/>
</VictoryChart>
</div>
<div
style={{
display: 'flex',
position: 'relative',
top: '-50px',
}}>
<VictoryChart
theme={VictoryTheme.material}
width={800}
height={350}
style={{
parent: {
backgroundColor: '#222',
},
}}>
<VictoryAxis
style={{
axis: {stroke: 'white'},
tickLabels: {fill: 'white'},
}}
/>
<VictoryAxis
style={{
axis: {stroke: 'white'},
tickLabels: {fill: 'white'},
}}
dependentAxis
/>
<VictoryStack>
{streamData.map((data, i) => (
<VictoryArea key={i} data={data} colorScale={colors} />
))}
</VictoryStack>
</VictoryChart>
</div>
</div>
);
}
Example #3
Source File: [auctionId].js From pure.finance with MIT License | 4 votes |
DPAuctionPriceChart = function ({ auction }) {
const { t } = useTranslation('common')
const startPoint = {
block: auction.startBlock,
price: auction.ceiling
}
const endPoint = {
block: auction.endBlock,
price: auction.floor
}
const currentPoint = {
block: auction.currentBlock,
price: auction.currentPrice
}
const winningPoint = {
block: auction.winningBlock,
price: auction.winningPrice
}
const stoppingPoint = {
block: auction.stoppingBlock,
price: auction.stoppingPrice
}
const basePlotData =
auction.status === 'running'
? [startPoint, currentPoint, endPoint]
: auction.status === 'stopped'
? [startPoint, stoppingPoint, endPoint]
: auction.status === 'won'
? [startPoint, winningPoint, endPoint]
: [startPoint, currentPoint, endPoint]
const plotData = basePlotData
.map(({ block, price }) => ({
block: Number.parseInt(block),
price: numberFromUnit(price, auction.paymentToken.decimals)
}))
.sort((a, b) => a.block - b.block)
// Calculating the x-axis ticks manually prevents x-labels to overlap, to
// repeat or to show decimal block numbers. And since the auctions can be live
// for many blocks or just a few, black math magic is required.
//
// First, start by defining the start, end blocks and the domain length.
const xStart = plotData[0].block
const xEnd = plotData[2].block
const xLen = xEnd - xStart
// Then split the domain length in 3 to have at most 4 ticks. Since the chart
// is relatively small and the block numbers are large, having just a few
// ticks is ok.
// Finally force the steps to be a whole number and force it to be at least 1.
const xStep = Math.max(Math.floor(xLen / 3), 1)
// Once the steps are defined, calculate how many ticks fit in the domain. Sum
// one to add the "ending" tick. Otherwise only the start and "inner" ticks
// will be shown.
const xTicks = Math.floor(xLen / xStep) + 1
// Finally create an array of that length whose values will be one step
// appart. To get a better look, start from the end, subtract one step at a
// time and then revert the array. That way the end tick will always match the
// end block.
const xTickValues = new Array(Math.max(xTicks, 1))
.fill(null)
.map((_, i) => xEnd - xStep * i)
.reverse()
return (
<div>
<VictoryChart
minDomain={{ y: 0 }}
padding={{ bottom: 55, left: 90, right: 30, top: 10 }}
width={450}
>
<VictoryAxis
label={t('block-number')}
style={{
axisLabel: { padding: 40 },
ticks: { stroke: 'black', size: 5 }
}}
tickFormat={tick => tick.toString()}
tickValues={xTickValues}
/>
<VictoryAxis
dependentAxis
label={auction.paymentToken.symbol}
style={{
axisLabel: { padding: 75 },
ticks: { stroke: 'black', size: 5 }
}}
/>
<VictoryLine
data={plotData.slice(0, 2)}
style={{
data: { strokeWidth: 2 }
}}
x="block"
y="price"
/>
<VictoryLine
data={plotData.slice(1)}
style={{
data:
auction.status === 'floored' ||
auction.winningPrice === auction.floor ||
auction.stoppingPrice === auction.floor
? { strokeWidth: 3 }
: { strokeWidth: 1, strokeDasharray: '10,10' }
}}
x="block"
y="price"
/>
<VictoryScatter
data={[
plotData[
auction.status === 'floored' ||
auction.winningPrice === auction.floor ||
auction.stoppingPrice === auction.floor
? 2
: 1
]
]}
size={8}
style={{
data: {
strokeWidth: 1,
fill: auction.stopped ? 'black' : 'white',
stroke: 'black'
}
}}
x="block"
y="price"
/>
</VictoryChart>
</div>
)
}